티스토리 뷰

Arduino

버튼으로 불빛 제어하기.

생각많은 소심남 2012. 1. 18. 00:11
지난번에 이어서 이번에는 버튼을 달아줍시다!

 
LED는 지난 포스팅처럼 연결하면 되고 이제 연결은 스위치를 잘 배치하면 됩니다.

이번 동작원리는 이렇습니다. 스위치에도 양극과 음극에 전원의 High와 Low를 연결합니다. 그래서 스위치를 누를때는 양극에 연결되어 있는 high가 아두이노상의 7번 포트로 들어가게 됩니다. 반대로 스위치가 안눌러질때는 막바로 gnd에 연결되어있게끔 되어 있는 것이지요.

위에서 보면

 


다음과 같이 구성하면 됩니다. 반드시 스위치의 한쪽은 POWER의 5V라고 표시되어 있는쪽에 다른 한쪽은 10k옴 저항을 거친 후의 노드에서 gnd로 나가게끔 하면 됩니다.

저항을 달아주는 이유는 조금 생각해볼까요? 만약 저항이 안달리고 바로 gnd로 연결되어 있다면 과연 스위치를 눌렀을 때 불이 들어올까요?

이론상으로 생각해보면 POWER의 high가 바로 gnd로 들어가게 되어 소위말하는 쇼트가 발생할겁니다.

 그럼 코드를 봅시다.

 
우선 기존의 코드와 유사합니다.
다만 차이가 있다면 val이라는 변수가 추가되고 digitalRead가 들어간 겁니다.

우선 버튼은 7번 포트에 연결했기에 사전에 전역으로 지정합니다. 물론 다른 포트에 연결한다 저 숫자는 다르게 쓰면 되겠지요. 그러고는 버튼으로 들어가는 값을 입력으로 쓰게끔 setup()에서 설정합니다.
그럼 이제 버튼으로 들어오는 값을 아두이노가 읽어와야겠지요. 주체가 아두이노이니까 외부값은 읽어와야 합니다.
그래서 digitalRead가 되는 겁니다. 이 값을 활용하기 위해서는 다시 변수로 선언해서 거기다가 넣어주는게 낫겠지요.

그 역할을 val이란 변수가 합니다. 물론 그냥 정의하면 혹시 이상한 값이 있을 지도 모르므로 사전에 초기화를 하는 과정을 삽입합니다. 

이제 끝입니다. 스위치가 눌린다면 val은 그값을 읽어오므로 HIGH가 될 것이고 안눌린다면 LOW가 될겁니다.
 



그럼 조금 응용해봅시다.지금 스위치는 단순히 눌렀을때만 동작하니까
저는 스위치를 두개써서 오른쪽을 누르면 켜지고 왼쪽을 누르면 꺼지는 시스템을 만들고 싶습니다. 어떻게 하면 될까요?
 


그냥 이렇게 스위치 두개 붙이고

 
변수 하나 더 추가 시켜서 해당 조건을 수정해주는 겁니다. 정말 간단합니다.

 
이번시간은 버튼으로 LED를 제어하고 새로운 명령인 digitalRead()에 대해서 알아보았습니다. 

댓글