컴공 공작소

버튼 사용하여 LED 불켜기 - 누를때마다 상태 변환 본문

코딩

버튼 사용하여 LED 불켜기 - 누를때마다 상태 변환

쑤깨비 2018. 7. 24. 23:17

처음 아두이노를 혼자 공부할때 버튼 사용하는 것이 정말 쉬운 일 이라고 생각했다.

막상 제대로 버튼 사용하는 방법을 배워보니 생각보다 손이 많이 가는 녀석이었다.

뭘 이리 신경써야 하는 일이 많은지....

버튼을 연결만 한다고 해서 되는 것이 아니라 디바운싱도 해줘야 하고 풀다운이나 풀업 방식으로 저항도 연결해 줘야 하고 버튼 상태를 변경하기 위해서는 적당한 변수도 사용할 수 있어야 했다.

아두이노에서 버튼은 빼놓을 수 없는 부품 중 하나이니 제대로 익히고 넘어가야 한다.

디바운싱이나 풀다운/풀업 저항에 대해서는 다음 기회에 정리해 보기로 하고 오늘은 버튼을 사용할 수 있다는 전제하에 버튼을 이용한 LED 불 켜기를 해보려고 한다.

먼저 이번에 해보려고 하는 내용에 대한 동영상이다.

버튼을 한번 누르면 불이 켜지고 또 다시 누르면 불이 꺼지는 내용이다.


먼저 회로도....

회로도는 그렇게 어렵지 않다.

LED 에는 220Ω 을 (-)쪽에 연결하면 되고, 버튼은 10㏀을 연결했고 풀다운 방식으로 연결했다.

버튼의 입력값은 2번 핀으로 연결했고 LED 입력은 13번 핀에 연결해줬다.

아래에 스케치 코드에 보면 2번과 13번 핀을 전역변수 값을 사용해서 지정해 줬다.

전역변수를 사용하면 이후 코드 수정할 때 유리하므로 될수 있으면 변수를 사용해서 지정해 주는 방법으로 연습하면 좋을 것 같다.


그리고 스케치로 작성된 코드

코드에 대한 주석을 달았다.

코드 중에서 if 를 사용한 토글(상태변환)을 눈여겨 봐야 한다.

변수를 사용해서 버튼이 눌렸다는 상태를 판단한 후 LED에 불을 켜고 다시 버튼이 눌렸다는 상태를 판단하고 LED에 불을 끈다.

이해를 돕기 위해 변수값을 표로 정리해 봤다.

current_Button 변수는 현재 버튼이 눌린 상태인지 아닌지를 판단하는 변수이다.

last_Button 변수는 현재 버튼의 값(current_Button)을 받는 변수이다.

처음 버튼이 눌렸을때는 1값을 갖게 되는데 loop() 함수를 돌면서 값이 '0'으로 바뀌게 된다.

Led_On 변수는 버튼이 눌릴때마다 이전과 반대의 상태를 갖게 되는 변수이다. '0'과 '1'값을 번갈아 가며 갖는다.


그렇게 어려운 코딩은 아닌데 변수의 상태 변화를 이해해야 완성할 수 있다.

버튼 상태를 토글 시키려고 할때는 위의 if 구문을 사용하면 된다.

조금 더 정확한 동작을 시키려면 디바운싱 처리도 해줘야 하는데 그건 다음에 정리하는 걸로... ^^;;;;

Comments