본문 바로가기

아두이노

아두이노에서 버튼으로 LED 제어하기 2

'아두이노에서 버튼으로 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 시뮬레이션 결과