준비물 프링글스 1통, 아두이노 우노, LED 2개(눈알로 쓸것들?), full LED 1개, usb연결 단자, 포토레지스터(빛센서), 컴퓨터, 인두 세트, 공구 및 기타 등등
일단 시작하기 앞서 알아둬야 할 것들이 있는데, LED는 다리가 긴쪽이 (+), 짧은쪽이 (-)란 거죠. 또한 아두이노 기판에서 GND라 표시된 것이 (-)를 꼽을 곳이란 것, 나머지는 진행하면서 차차 설명하도록 하죠.
아듀이노 우노 기판의 모습
선 같은 것들 때문에 정신없지만 그런것들은 간단하게 무시하고 기판을 살펴보면 컴퓨터 칩같은 것들과 뭔가 꽂아야할 것 같은 구멍뚫린 단자가 보이고, 단자 옆에 A1, digital input, analog input, GND, 5v 등 알 수 없는 것들이 마구 써있네요. 그리고 아두이노 우노 보드임을 알려주는 UNO 로고가 보이네요.
우선 GND는 GROUND의 줄임말로 여기에 (-)다리를 꽂으면 되고, 나중에 (+)다리는 오른쪽에 나열된 숫자가 써진 곳이나 왼쪽에 A1~A5에 꽂으면 된답니다. 맨위의 IOREF, RESET, AREF 같은 것들은 지금은 신경 안써주셔도 되어요.(안쓸꺼니깐…) 3.3v, 5v 등은 나중에 저항 설치할 때 이야기 하도록 하죠.
A0~A5까지는 아날로그 인풋이라고 해서 신호가 부드럽게(?)들어가는 느낌? 나중에 LED 연결해보시면 알 수 있어요. 그리고 오른쪽 디지털 인풋은 on, off만 할 수 있다고 생각하시면 편해요. 1부터 13까지 있는데, 그중에 앞에 ~표시가 되어있는 숫자가 써진 단자들은 아날로그 인풋 겸용인 것만 안다면 우노 보드에 대해 알아야할 것들은 끝!
인두로 LED 납땜 중
LED의 긴다리는 (+), 짧은 다리는 (-)인것만 기억하신다면 이제 선들을 다리에 연결하세요. 기본적으로 (-)는 검은색선, (+)는 색깔이 들어간 선을 쓰니 기억하고 나중에 헷갈리지 마시길! 저는 초록색선을 (+)에 썼답니다.
선과 LED를 연결했다면 반대쪽에는 단자 핀을 같이 땜질해 주세요. 당신의 단자 소켓은 소중하니깐요!
땜질이 끝났다면 이제 검은색선을 GND 단자에 초록색을 우측 디지털 단자 소켓에 끼워주세요. 어느 번호 소켓에 끼워넣는가는 상관없지만, 단자를 꽂은 소켓번호를 기억해 두시길. 아두이노로 코딩할때 소켓번호를 기억해놔야 써먹을 수 있어요.
아듀이노 블링크 예제 위치
이제 아두이노를 설치하시고 실행하세요. 구글에서 아두이노를 검색하시면 쉽게 찾을 수 있으니 어렵지는 않을 겁니다. LED를 깜박이는 가장 기본적인 방법은 아두이노에 기본적으로 내장되어 있는 Blink 예제에서 확인할 수 있어요.
예제를 확인하셨나요? 생각보다 너무나 짧은 코드에 당황하셨나요? 보시다시피 아두이노는 LED를 깜빡이는 정도는 정말 간단한 코딩만으로 가능하니 돈 워리 비 해피.
/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
코드를 확인하셨나요? 여기서 첫번째 만져야할 부분은 바로 켜야할 led를 정의해 주는 부분인데요. Javascript의 var처럼 이와 같은 역할을 int 명령어가 대신한답니다. 그래서 첫 줄 int led = 13의 의미는 led라는 변수에 13번째 단자를 할당한다는 의미가 되죠. 위에서 초록색선을 꽂아둔 번호를 기억하시나요? 물론 꽂아둔 단자가 두개겠지만 우선 그중에 하나만 선택하여 깜빡이게 해보죠.
저는 변수를 left_eye로 하고 초록색선을 5번에 꽂아 놓았으니 어떵게 해야할까요? 밑에 보기를 참고하여 각자 취향에 맞게 타이핑해보세요! 변수는 다르게 하셔도 상관없다는 사실! 세미콜론도 잊지마세요! 한 코드를 끝맺어 줄때 보통 세미콜론을 쓴답니다
int left_eye = 5;
이제 void setup()에서 변경해야할 부분이 보이시나요? 바로 led라고 쓰여진 부분인데요. pinMode(led, OUTPUT)을 간단하게 설명하면, 위에서 선언해준 led에 해당하는 단자에 신호를 보내겠다는 의미랍니다. 저는 위에서 left_eye라고 선언했으니깐 led가 아니라 left_eye가 되어야겠죠?
void setup() { pinMode(left_eye, OUTPUT); }
이제 마지막 void loop()부분을 살펴볼까요? 여기서 digitalWrite()부분은 디지털식으로 신호를 주는 명령어라고 생각하시면 편합니다. 여담으로 아날로그 단자에 아날로그 신호를 주려면analogWrite() 명령어를 쓸꺼지만 이부분은 지금 신경 안쓰셔도 되니 이런게 있다라고 기억해두세요.
옆에 주석으로 된 설명을 읽어보시면 HIGH는 전압을 높여주는 것, LOW는 전압을 낮춰주는 것이라고 친절하게 설명되어 있네요. 따라서 HIGH일 경우는 불이 켜진다고 생각하시면 되고,LOW일 경우에는 불이 꺼진다고 생각하시면 된답니다.
여기서 delay()부분은 어느정도 지속시킬 것인가를 결정하는 것인데요. 예를 들어, HIGH명령어 뒤에 붙은 delay()명령어는 켜진뒤 이것을 얼마나 지속시킬지 결정하고, LOW뒤에 명령어 뒤에 붙은 delay()명령어는 얼마나의 시간을 꺼둘지 결정하는 거랍니다. 또한 기억해야될 것은 delay()안의 숫자는 ‘second(초)’단위가 아닌 ‘Micro Second’단위임을 잊지마세요!
저는 2초정도 켰다 꺼졌다를 반복할 생각인데…이제 어느정도 감을 잡으셨을테니 어떻게 코딩할지 아시겠죠?
void loop() { digitalWrite(left_eye, HIGH); delay(2000); digitalWrite(left_eye, LOW); delay(2000); }
아듀이노 코드 업로드중
이제 각자 변경한 코드를 아두이노에 업로드 시켜볼까요? 업로드 하는 방법은 메뉴 밑에 보이는 체크 단추옆 오른쪽 화살표 단추를 클릭하면 끝!
밑에 로딩바가 끝까지 진행되면 해당하는 LED가 깜빡이는 것을 확인할 수 있어요. 그럼 이제는 LED 두개 다 깜빡거리게 해야겠죠? 위에서 제가 설명한 내용들을 참고해서 설치한 LED 두개 다 깜빡거리게 해보세요. 변수나 딜레이 깜빡거리는 횟수는 원하는대로 정해서 한번 시도해보세요. 밑에 예시 코드가 있으니 참고하셔서 하시면 됩니다.
이걸로서 첫째날에 할 것은 모두 끝났습니다!
아두이노 예제를 이용해서 LED를 갖고 놀아보세요!
WRITTEN BY
- 강수명 Vanns Kang
하고 싶은거 하고 사는 조금은 잘 빡치는 평화주의자