-
해당 회로도를 구현할 것이다. 전압은 3.3V가 필요하고 LED1, LED2쪽이 GND가 된다.
led가 (+)이고, 3.3V가 다리 긴 쪽으로 연결돼야 한다.
GPIO가 High상태면 전원과 똑같은 3.3V를 갖게 되기때문에 전류가 흐르지 않아 불이 켜지지 않는다.
반대로 GPIO가 LOW상태면 0V를 갖게되므로 전류가 흘러 불이 켜진다.
먼저 STM칩에 검정색을 GND, 주황색을 3.3V 전압에 연결하고, 보드에서 +에 주황선을, -에 검정선을 연결하였다.
다음 빨간색을 40번에 연결하면 40번에 해당하는 세로줄은 다 전류가 흐른다. 맨마지막에 다이오드 긴 다리를 연결한다.
저항을 추가해줘야하는데 빨+빨+갈+금에 해당하는 저항을 걸어준다. 이건 220옴을 의미한다.
마지막으로 그라운드를 흐르게 만들면 위 그림과 같이 불이 들어온다.
깜빡이게 만들려면 코드를 다음과 같이 수정하면 된다.
HAL_GPIO_WritePin(PB6_LED1_GPIO_Port, PB6_LED1_Pin, 0); HAL_Delay(1000); HAL_GPIO_WritePin(PB6_LED1_GPIO_Port, PB6_LED1_Pin, 1); HAL_Delay(1000);
초기 상태를 Low로 만들면서 전류가 흘러 불이 들어온다. 다음 상태는 1(High)이므로 전류가 흐르지 않아 불이 들어오지 않는다.
스위치 동작 과정을 보면 1번쪽이 3.3V 전압, 2번이 GND가 된다. 스위치기 눌려지기 전에는 전류가 흐르지 않고,
스위치가 눌러지면 가운데 선이 연결되면서 1->2번쪽으로 전류가 흐른다.
스위치를 누르지않았을땐 PB0이 High 상태가 되고, 스위치를 누르면 전류가 흐르면서 PB0이 Low상태로 변한다.
스위치가 어떤부분이 전원이고 GND를 구분하기위해 테스터기를 사용하면된다.
전원이 들어오는 부분을 +로 연결하고, 나가는 부분인 빨간선이 -와 같이 위치하게 된다.
버튼을 제어하기 위해 PB0에 선을 연결하였다. 저항선을 바꿔준뒤 전원과 같은 세로선에 연결하였다.
그리고 PB0을 Input으로 설정하고, ReadPin 함수를 추가하였다.
먼저 버튼 상태를 추가하고,
버튼을 누르기전엔 초기상태가 1이였다가 버튼을 누르면 0으로 변하는것을 볼 수 있었다.
최종적으로 PB6까지 연결해주었다.
전원선을 하나 더 추가해서 LED를 같은 선상에 연결하고, 저항을 추가해준 후 PB6과 연결한 모습이다.
if (!HAL_GPIO_ReadPin(PBO_TEMP_SET_UP_GPIO_Port, PBO_TEMP_SET_UP_Pin)) { HAL_GPIO_WritePin(PB6_LED1_GPIO_Port, PB6_LED1_Pin, 0); } else { HAL_GPIO_WritePin(PB6_LED1_GPIO_Port, PB6_LED1_Pin, 1); } HAL_Delay(500);
코드상은 스위치를 눌렀을때 LED가 Low 상태가 돼서 불이 켜지는 것이다.