본문 바로가기

Hardware/Arduino and Friends

[아두이노 연재] 아두이노 GPIO 사용하기 - LED와 버튼

지난주부터 아두이노 연재를 시작했지요. 지난번에 이어서 가장 간단한 LED와 버튼을 이야기 해보려고 합니다.

오늘 필요한 재료는 LED 두 개와 버튼 (사진으로는 두개인데, 그냥 하나) 330옴 저항 두개, 1k옴 저항 하나, 그리고 점핑 와이어가 있으면 됩니다. 그리고, 지난 시간에서도 사용했던 아두이노 우노 보드와 케이블, 그리고 약간 생소한 브레드보드(일명 빵판)가 있으면 됩니다.

이게 브레드보드입니다. 이름처럼 빵(^^)스럽게 생기진 않았지만, 아주 유용한 아이입니다. 전기쪽에서 부품을 연결하려면 납땜이라는 것을 해야할텐데, 이 보드를 사용하면 그렇게 하지 않아도 됩니다. 간단하게 부품을 배치하고 연결해서 테스트해볼 수 있는 거죠. 그리고 나서 테스트가 끝나면 다시 부품을 재활용할 수 있습니다.

사진출처 : https://learn.adafruit.com/assets/35425

브레드보드는 위 그림처럼 Power Rail이라고 표기된 부분이 서로 연결(화면상으로 가로방향)되어 있고, 그 안에 작은 열들이 또 연결되어 있습니다. 서로 연결되는 방향이 다릅니다. 제일 윗쪽과 아랫쪽은 가로방향으로 길게~, 가운데 있는 다섯개씩 있는 것은 세로 방향으로 자기들끼리 연결되어 있습니다.

브래드보드의 이해와 단순 LED 구동

그래서 아두이노에서 5V와 GND에서 선을 빼서 브래드보드에 저렇게 연결해 두면 그 위로 전부 5V이고 GND입니다.^^

그래서 LED에 GND(-)를 연결할때는 위 그림처럼 선을 연결하면, 아두이노의 GND와 각 LED를 연결할 수 있습니다. 이번엔 또 LED도 나왔네요^^

그림 출처 : 생각대로 블록코딩 1권

위 그림에서 보면, LED는 내부에 보면 저렇게 +-를 구분할 수 있습니다.

일단, 저렇게 GND를 연결합니다. LED는 +-의 구분이 중요하니 그림을 보고 잘 판단해야 합니다.

이제 저항을 연결합니다. 두 LED 모두 GND는 검은선으로 연결했고, 그 다음 + 방향의 선에 저항을 330옴을 연결합니다. 응? 왜 330옴이냐구요. 5볼트에 330옴을 연결하면, 옴의 범칙에 의해 아마 10~20mA정도가 만들어집니다. 저런 종류의 LED를 구동하기 위해 필요한 전류인거죠. 뭐 아무튼, 그래서 저항을 저렇게 연결합니다.

실제로는 저렇게 됩니다.

네.. 저렇게 저항까지 연결을 했습니다.~

그리고, 코드를 짜기 전에 진짜 LED에 불이 들어오는지 확인하려고, 저항의 나머지 부분을 5V(+)에 연결합니다. 그리고, 아두이노 보드는 컴퓨터와 연결되어야 합니다. 그러면 PC의 USB 전원으로 LED가 켜지게 됩니다.

저렇게 말이죠^^

코드를 이용한게 아니라, 그냥 + -에 LED를 연결한 것 뿐인거죠^^

LED 구동

이제 LED의 + 부분(실제론 저항을 통과한 부분)을 아두이노의 3번과 5번에 연결하겠습니다.

이렇게 연결되겠지요.

그리고, 이렇게 코드를 작성합니다. 위 코드는 전혀 어렵지 않습니다. 그저 RED와 GREEN LED를 각각 3번 5번에 연결한 것을 변수로 저장해 두고, setup() 함수에서 출력(OUTPUT)이라고 모드를 설정합니다. 그리고, digitalWrite 명령으로 HIGH를 전송해서 켜보는 것이지요. 그러면 저 코드를 업로드하면 그냥 켜집니다.

이번에는 저렇게 바꿔보는 겁니다. 그러면 1초 간격으로 켜졌다/꺼졌다를 반복합니다. 

버튼으로 LED 동작해보기

이제 버튼을 달아 보도록 하겠습니다.

그림출처 : 생각대로 블록코딩 1권

버튼은 위 그림처럼 연결을 많이 합니다. 버튼을 누르기 전에는 버튼으로는 전기가 흐리지 못합니다. 그러면 + 신호는 그냥 그림 오른쪽 신호라고 표기된 곳으로 지나가서 HIGH가 됩니다. 버튼을 누르면 버튼 방향으로 흘러서 신호라고 표기된 곳 입장에서는 LOW가 됩니다. 즉. 버튼을 누르면 LOW, 안누르면 HIGH입니다.

버튼을 위 그림처럼 추가합니다.

음.. 실제론 저렇게 연결되는 거지요~

버튼은 4번핀에서 읽도록 하겠습니다.

전체 그림이네요~^^

전체 코드입니다. 버튼 BTN은 4번에 두고, 버튼의 상태를 알려주는 변수를 BTN_state를 만들어서 0이라고 두었습니다. 그리고 setup에서 BTN은 INPUT이라고 모드를 잡습니다. 그리고 loop에서 BTN_state가 0이면 버튼이 눌러진 것으로 LED를 켜고, 아니면 끄라고 하는 거죠.

저렇게 됩니다. 오늘은 정말 간단한 코드를 한 번 학습했지만, 오늘 배운 개념이 꽤 중요합니다.

반응형