카테고리 없음

아두이노 프로그래밍 버튼 제어

abc0123 2017. 9. 14. 09:16
반응형

아두이노 프로그래밍 버튼 제어

지난 글에서는 아두이노 프로그래밍 중 기본 가장 기본 예제에라고 할 수 있는 LED에 전류를 보내서 순서대로 반짝이게 하고 마치 파도타기 하는 것 같은 효과를 만들어 봤는데 그런 아두이노 LED전류를 흘러보내면 무한대로 반복해서 실행이 되기 때문에 마음대로 LED 빛을 컨트롤을 할 수 없는 문제점(?)이 있다. 이번 글에서는 그런 문제(?)를 해결하기 위한 방법으로 버튼을 하나 설치해서 눌렀을 때만 불이 들어오도록 하는 아두이노 프로그래밍을 해보려고 한다.

 

준비물은 LED와 저항 그리고 버튼이다.

 

준비물

 

▲ 며칠 전 아두이노키트 개봉하는 글에서 정리했던 부품들인데 다뤄볼수록 조금 허술한 느낌이 들지만 제 역할만 제대로 하면 되니 일단 기초를 다질 동안은 이 녀석들을 사용할 계획이다.

 

 

배선

 

▲ 먼저 아두이노 보드에서 점퍼선들을 연결해본다. 빵판의 그라운드(GND)로 들어가는 전류 음극(-)은 빨간선으로 연결을 했고 디지털 핀 10번에는 LED를(흰색선), 2번에(주황색)는 스위치를 연결을 했다. 즉 2번 핀을 통해서 스위치의 ON 상태가 입력(INPUT)이 되면 10번 핀을 통해서 전류가 흘러나가서 LED를 켜지게 할 것이다.

 

그리고 스위치의 ON 상태를 입력받을 2번 핀은 입력만 받기 때문에 전류가 안 가는 모양이다. 따로 5V 전류를 흘려보내게 되어 있더라. (이제 막 아두이노를 접해서 따라 하는 수준의 실력밖에 안되기 때문에 자세하게 정리는 못하겠지만 내 추측으로 대충 이렇게 정리를 했다.)

 

또 이 디지털 핀을 입력으로 설정하면 전압이 HIGH와 LOW를 왔다 갔다 하는 '플로팅' 현상라는 게 생긴다고 한다. 즉 눌렀을 때 그 값이 꾸준하게 입력이 되지 않고 끊겼다가 연결되는 상황이 반복되는 모양이다. OUTPUT으로 설정하면 그런 일이 없는데 INPUT으로 하면 이런 현상이 생기는 모양이고... 이런 상황을 해결하기 위해서는 스위치 바로 앞에 저항을 설치해줘야 한다고 한다. (이 부분도 더 이상 자세히 정리하기에는 역부족인 초보자.ㅠ.ㅠ 여하튼 안정적으로 스위치의 값을 받아들이기 위해서 저항을 설치한다고 개념을 정리하고 넘어간다.)

 

 

5V

 

▲ INPUT으로 설정해서 전류 공급이 되지 않는 스위치에 전류를 제공하기 위해서 이렇게 5V의 전류를 따로 흘려보낼 검은색 선을 연결했다. 이 선들이 빵판으로 어떻게 들어가는지 확인해보자.

 

빵판

 

▲ 먼저 스위치 바로 아래쪽으로는 따로 연결한 5V의 전류가 들어오는 검은색 선이 연결됐고 그 바로 옆의 주황색 선은 버튼이 눌렸을 때 입력값을 2번 디지털 핀으로 보내는 역할을 하는 선이다. 그리고 그 옆에 저항을 설치해서 앞에서 언급한 플로팅 상태를 대비했고 흰 선으로 그라운드에서 음극(-)을 보내고 있는 모양이다.

 

또한 위 그림 중 가장 오른쪽에 빨간선은 아두이노 보드에서 그라운드 전체에 (-) 전류를 보내고 있으며 그 옆 주황색 선은 LED에 (-)를 제공하고 있다. 그리고 10번 디지털 핀의 흰색선이 저항을 통해서 LED에 전류를 흘려보내고 있는 걸 확인할 수 있다.

 

이제 빵판에 위치한 스위치를 눌렀을 때 LED에 빛이 들어오도록 스케치에서 프로그래밍을 해보자.

 

아두이노 프로그래밍

 

▲ 먼저 LED에 전류를 흘러보낼 10번 핀, 그리고 버튼 값을 입력받을 2번 핀을 각각 LED, BUTTON으로 상수 선언을 했으며 딜레이 시간을 담당할 TIME도 5초로 선언을 했다.

 

 

초기화 작업 구간에서는 LED, 즉 10번 핀은 OUTPUT으로 2번 BUTTON은 INPUT으로 초기화 설정을 했으며 반복되는 루프(loop) 구간에서는 if 문을 사용해서 만약 버튼이 눌렸을 때는 LED에 전류를 흘러보내고 5초 후에 꺼지도록 한 내용이다. 이 내용을 아두이노 보드에 업로드 한 후 실행을 해보면 다음과 같은 결과 값을 얻을 수 있다.

 

 

▲ 버튼을 한 번 눌러주면 LED에 빛이 들어오며 그대로 켜져 있다가 5초 후에 꺼지는 걸 확인할 수 있다.

 

이렇게 해서 아두이노 버튼의 값이 입력될 때마다 LED가 켜지는 예제를 만들어봤는데 초보자 나름대로 정리한 내용은..... 값을 입력받는 INPUT은 따로 전류를 흘려보내줘야 하고 디지털 핀의 INPUT 상황에서는 플로팅 상태가 생기며 이를 해결하기 위해서 저항을 사용한다는 내용까지 습득을 해봤다.

반응형