[아두이노] [강좌] 6. digitalWrite() 함수 실습 - LED 깜빡이기
으잉? LED를 깜빡이는 거라면 Blink 예제에서 다 했는데?
이번 시간은 아두이노 보드에 달려있는 ‘L’ 램프가 아닌, 진짜 LED를 켜는 법을 알아보자. 소스는 Blink 예제와 동일하겠지만 실제로 아두이노와 다른 센서 등이 어떻게 연결되는지 간단하게 알 수 있는 실습이 될 것이다.
실습을 위해서는 4가지가 필요하다. 아두이노 보드, LED, 핀 케이블, 브레드 보드(일명 빵판).
아두이노 보드는 이미 가지고 있을 것이고, LED와 핀 케이블, 그리고 브레드 보드는 온라인 상에서 쉽게 구입할 수 있다. 앞으로의 실습을 위해서 브레드 보드와 핀 케이블 정도는 미리 구매해두는 것이 좋다.
구매 참고 사이트는 아래에 접어뒀지만, 말 그대로 참고를 위한 것일 뿐, 나랑은 전혀 상관없는 사이트 들임을 밝힌다. (요새 이렇게 말 해두지 않으면 잡혀가는 무서운 세상이라. ㅜㅜ)
브레드 보드는 소형으로 구매해도 좋고, 좀 더 큰 것으로 구매해도 좋다. 본인이 만들고 싶은 작품에 센서나 모듈 등이 많이 필요하다면 큰 걸 고르는 것이 좋겠지. 그리고 핀 케이블은 넉넉하게 구매해 두도록. 보통 자신이 가지고 있는 아두이노 보드의 핀 개수보다 조금 더 많게 가지고 있는 것이 좋다. 명심해야 할 것은, 핀 케이블에는 발이 달렸다. 자꾸 없어져. -_-
우선 LED를 살펴보자. 다리가 긴 쪽과 짧은 쪽이 보일 것이다.
다리 길이로 구분하기 힘들다면 LED 머리 부분의 금속판으로 구분할 수 있다. 다리가 길고 머리의 금속 판이 좁은 쪽이 +극, 다리가 짧고 머리의 금속 판이 넓은 쪽이 –극이다. +/-극에 맞춰 아두이노 보드의 전원을 연결해야 하기 때문에 꼭 확인하도록 하자.
우노(Uno) 또는 메가(Mega 2560/ADK) 보드에서 13번 핀의 위치를 찾아보자. USB 커넥터 부분을 왼 쪽으로 뒀을 때 위쪽의 맨 왼쪽(번호가 써진 핀들 중) 핀이 13번 핀일 것이다.
LED를 꽂아보자. 13번 핀의 바로 옆에는 “GND”라고 표시된 자리가 있을 것이다. “GND”는 “Ground”의 약자로 우리 말로는 ‘접지’. LED의 –극이 꽂히는 자리다.
LED의 +극(다리가 긴 쪽, 머리가 좁은 쪽) 다리를 13번에, -극(다리가 짧은 쪽, 머리가 넓은 쪽) 다리를 GND에 꽂도록 하자. 꽂는 방향 꼭 주의!!
꽂을 때는 반드시 전원을 뺀 상태에서. 감전될지도 몰라요, 으흐흐. (농담임)
그리고 Blink 예제를 올려보자. ‘L’ 램프가 깜빡이는 것과 동시에 LED에 불이 들어왔다가 꺼지는 것을 확인할 수 있을 것이다.
음? 근데 핀 케이블이랑 브레드 보드는 왜 산 거?
이제 브레드 보드에 꽂아서 실습해볼꺼니까.
브레드 보드에 LED를 꽂고. 역시 꽂는 방향에 주의.
브레드 보드는 아래 그림 중에 아래 쪽 그림에 표시된 노란 선끼리 연결되어 있다. 즉, 아래 그림에서 세로로 나열된 구멍 5개씩 서로 연결되어 있고 상단, 하단에 있는 가로로 긴 줄은 길게 한 줄이 모두 연결되어 있다. 빨간 줄과 파란 줄은 각각 전원과 GND를 꽂기 위한 자리라는 표시이다. 무조건 전원이랑 GND만 꽂으라는 건 아니고, 그냥 권장.
LED의 두 다리는 연결되지 않은 구멍에 각각 꽂아야 하며, 핀 케이블은 다리 하나 당 하나씩 연결된 구멍에 꽂아야 한다. 뭔가 엄청 복잡하고 헷갈린 말이지만 사진으로 보면 간단하다.
음.. 사진 찍을 때 초점 잡는 법부터 배워야겠네?
작게 써있어서 잘 안보일지도 모르지만, LED의 +극 다리가 노란 선 쪽, -극 다리가 흰 선 쪽이다. 노란색 선의 반대 쪽 끝을 13번 핀에 연결하고, 흰색 선의 반대 쪽 끝을 GND에 연결하자. 아두이노 보드마다 GND를 꽂을 수 있는 곳은 여러 개가 있는데, 그 중에 아무 곳에나 꽂아도 상관 없다.
| 노란색 선 | 흰색 선 |
아두이노 보드 | 13번 핀 | GND |
LED | +극 다리 | -극 다리 |
그리고는 다시 Blink 예제를 실행해 보자. 아까와 똑같이 LED가 깜빡이는 것이 보이는가? 아두이노 보드와 다른 센서 또는 모듈을 연결할 때 브레드 보드를 활용해야 한다면, 지금처럼 핀 케이블을 이용해서 연결할 수 있다.
물론 센서 보드나 모듈에 핀 헤더(핀 케이블 핀을 꽂는 부분)가 달려 있어서 브레드 보드를 사용하지 않고 핀 케이블만으로 직접 연결할 수도 있고. 어떤 모듈들은 아두이노 보드에 꼭 맞는 쉴드 형태로 나와서 그냥 아두이노 보드 위에 척 올려 꽂기만 하면 되는 형태도 있다.
간단하게 LED로 설명했지만 아두이노에 사용되는 다른 대부분의 센서나 모듈들은 아두이노 보드와 연결만 잘하면 작품의 80%를 끝낸 것이라 할 수 있다. 아두이노 용으로 나온 센서나 모듈들의 대부분에는 어느 핀을 어디에 연결하면 되는지 아주 친절히 설명하고 있으므로 설명서대로만 연결하면 됨. 앞으로 우리가 하나하나 실습해 보겠지만.
그냥 끝내기 아쉬우니까 우리 Blink 예제를 한번 수정해볼까?
아래와 같이 delay() 함수의 지연 시간을 2000밀리초로 수정한 후 업로드 해보자.
오, 깜빡이는 간격이 2초로 바뀐 것이 보이는가?
그럼 이번엔 빨리 깜빡이게 해보자. 500밀리초로 바꿔보자.
이게 다야? 라고 생각하지 말기를. 아두이노는 이만큼 쉬운 거고, 아두이노 강좌는 이제 시작이니까.
* 참고 : 13번 핀에 대하여.
Blink 예제에서도 그렇고, 대부분의 아두이노 교재에서 LED를 켜는 예제를 보면 13번 핀에 LED를 연결하라고 되어 있다. 왜? 하필이면 13번?
우노(Uno)나 메가(Mega 2560/ADK)의 경우에도 그렇고, 대부분의 아두이노 보드에서 13번 핀이 GND와 가장 가까운 핀이라는 것이 첫 번째 이유이고, 그래서 13번 핀을 LED를 위한 핀으로 정해버렸기 때문에 아두이노 보드 설계 단계에서 13번 핀에 아예 저항을 달아버렸기 때문이다.
위 실습에서 사용한 LED는 사실 아두이노 보드의 기본 출력인 5V보다 낮은 전압을 사용하기 때문에 LED가 꼬마전구처럼 펑 터지는 것을 방지하기 위해 +극 쪽에 저항을 연결해줘야 한다. 하지만 말했다시피 13번 핀에는 저항이 이미 달려있기 때문에 따로 저항을 연결하지 않아도 LED가 터지지 않았던 것.
만약에 내가 13번 핀을 사용하지 않고 12번 핀으로 LED를 켜고 싶다면 노란색 케이블을 12번에 바로 꽂아서는 안 된다는 말. 터진다구. 노란색 케이블과 12번 핀 사이에 직렬로 저항을 연결해야 한다.
13번 핀에 저항이 달려있기 때문에, 이 핀을 INPUT 모드로 사용할 때 주의해야 한다. 저항 때문에 입력되는 전압이 실제 전압보다 낮아져서, 입력 값이 1이냐 0이냐를 판단하는 기준 입력 전압보다 떨어지는 경우가 생길 수 있기 때문. 꼭 13번 핀을 INPUT 모드로 사용해야 할 경우가 있다면 꼭 풀다운 저항을 연결하라고 아두이노 공식 홈페이지에서는 권장하고 있다.