'아두이노에서 버튼으로 LED 제어하기'는 버튼을 누르고 있는 동안, 또는 버튼을 누르지 않고 있는 동안 상태를 반영하여 LED를 제어하였으나, 이번 실습에서는 버튼을 한 번 누르고 떼는 것을 인지하여 LED를 제어하는 실습이다.
회로구성
- '아두이노에서 버튼으로 LED 제어하기'와 동일한 (LED+BUTTON) 회로 구성
동작
- 아두이노에 전원이 인가되면 LED는 켜져있다.
- 버튼을 눌렀다가 떼면 LED는 꺼진다.
- 다시 버튼을 눌렀다가 떼면 LED는 켜진다.
- 이 동작을 무한히 반복한다.
코드
함수
- int get_btn_state() : 버튼의 상태를 받아오는 함수
코드 설명
- !digitalRead(btn) : digitalRead함수는 btn 핀의 상태를 LOW 또는 HIGH 값으로 반환함. btn 핀은 PULL-UP 상태이므로 버튼이 눌러지면 LOW로 바뀜.
즉, 버튼이 눌러지면 digitalRead(btn) == LOW 가 되고 !digitalRead(btn) == !LOW == HIGH == 1 == true가 된다. - !btn_state : btn_state는 초기값으로 0을 가지므로 0 == false와 같다. 여기에 not 연산을 수행하면 false → true로, true → false로 바뀐다.
Tinkercad 시뮬레이션 결과
'아두이노' 카테고리의 다른 글
아두이노와 2개의 7세그먼트를 이용한 카운터 구현 (0) | 2021.05.16 |
---|---|
아두이노와 7세그먼트를 이용한 16진수 카운터 (0) | 2021.05.16 |
아두이노를 이용한 2개의 LED 제어 (0) | 2021.05.16 |
아두이노에서 버튼으로 LED 제어하기 (0) | 2021.05.13 |
아두이노를 이용한 LED 제어 (0) | 2021.05.13 |