아두이노_3. LED 동작해보기(Blink 예제)

목표
– 아두이노 메가 2560 보드에 있는 LED를 동작시켜보자!

1. 시작하기 전에

앞서 아두이노 IDE도 설치했고, 회로도 및 명령어도 어디서 확인할 수 있는지 아두이노 홈페이지에서 확인해봤어요.
언제그랬냐구요? 생각이 나지 않는다구요??? 머리속에 없다구요??????? 저런!
걱정하지 말아요! (http://www.arduino.cc → RESOURCES → PRODUCTS → Click your Arduino type → DOCUMENTATION → SCHEMATICS)
여기에서 회로도 확인하면되니까요!

2. 아두이노의 내장 LED가 보이네?

자, 이제 뭔가 직접 프로그램을 건드리면서 동작이 잘되는지 확인을 해보고 싶은데,
쉽게 동작시켜 볼 무언가가 없을까 하던 순간, 아두이노 기판에 LED가 보이네요!?
우리가 직접 건드려 볼 수 있는 LED라면 이걸 이용해 보면 좋을 것 같단 생각이 드네요!

그럼 가장 먼저 LED가 언제 동작하도록 꾸며져 있는지 확인을 해봐야겠죠!?
회로도를 다시 한번 확인해 봅시다!
우선 위에 캡쳐한 회로도를 보면 두 개의 LED가 눈에 딱 들어오네요. 녹색과 노란색!

녹색 LED는 저항을 거쳐 5V 라인에 연결이 되어있네요.
아마도 아두이노 보드의 상태를 알려주기 위한 LED 인 것 같아요.
(아두이노 보드의 전원이 들어오면 켜지는 그런 느낌적인 느낌의 LED!)

녹색은 탈락! 노란색 LED를 확인해봅시다. 어라? 이상한 뭔가를 거쳐 ATmega의 PB7이란 곳에 연결되어 있네요?
그 말인 즉, 우리는 결국 ATmega에 프로그램을 짜서 넣을 예정이니까 뭔가 우리가 건드려 볼 수 있는 그런 LED 인 것 같은 예감이 팍팍!?
우리 같은 초보자가 처음 실행해 보기에 딱 좋은 예제가 될 것 같은 느낌!

3. 아두이노 IDE를 열고, Blink 예제 확인해보기

자, 이제 IDE를 열어 봅시다.
위에 항목들을 보면 예제들이 나와있는데, 여기서 “BLINK” 예제를 열어보도록 하죠.
(불러오기 방법 : 열기버튼(화살표 윗방향 그림) → 01. Basics → Blink)



위와 같은 화면이 보이시죠???
웬지 이 예제가 바로 아두이노 보드에 있는 LED 동작을 시켜보기위한 예제인 것 같네요.
일단, 열어보니까 setup()이란 함수와 loop()란 함수가 보이고 그 안에 뭔가가 적혀져 있습니다.

setup()함수안에 “pinMode(LED_BUILTIN, OUTPUT);” 란게 있네요?
이게 뭣이여? 가만, 언젠가 본적이 있는 느낌인데요?
(http://www.arduino.cc → RESOURCES → REFERENCE)
저번에 위의 경로를 따라가서 명령어 설명이 있는 것을 봤었었죠?
자, 위의 경로 따라가서 pinMode()가 뭐하는 녀석인지 확인해봅시다.


이렇게 써있네요……………………………죄다 영어네요. 하, 영어 못하면 진도나가기 어려운 더러운 세상!
이라고 생각하지 말고 영어사전을…!!! 우리의 필살기 구글번역기도 활용!
참고로 명령어 설명이 있는 페이지에 LED_BUILTIN 과 OUTPUT 이 무엇인지 설명이 있어요. 참고!!!


4. 어떻게 LED가 동작할 것인지 추측해보기!

“pinMode(LED_BUILTIN, OUTPUT);” → 이건 digital 13번 핀을 출력모드 로 사용하겠다 라는 뜻 같네요.
디지털 핀을 입력으로도 사용할 수 있고, 출력으로도 사용할 수 있는데 여기선 출력으로 쓰겠다!
아트메가 기준으로 봤을 때, 아트메가가 어떤 신호를 핀을 통해서 내보내는 건 OUTPUT!
외부에서 어떤 신호가 들어와서 아트메가로 들어가면 INPUT!
아까 회로도를 봤을 때, 아트메가의 디지털 핀이 어떤 회로를 거쳐서 노란색 LED에 연결되니깐, 뭔가 LED에 신호를 줄 것 같은 느낌이 오네요.

자, 이제 loop() 안에 있는 것들을 확인해 봅시다.

  • digitalWrite(13, High); → 디지털 13번 핀을 High로 출력해라! 즉, LED 켜라!
  • delay(1000); → 1초 딜레이. delay() 안의 숫자는 milli sec. 라고 하네요!
    (참고로, milli sec.는 ms 라고도 흔히 표기하고, 1ms는 0.001초를 의미해요.
    여기서 1000이라는 숫자가 쓰였으니까, 1000 * 0.001초 = 1초가 되겠죠. 따라서 1초 딜레이를 시키는 구문이네요.)
  • digitalWrite(13, Low); → 디지털 13번 핀을 Low로 출력해라! 즉, LED 꺼라!
  • delay(1000); → 앞에서 나온 것처럼 1초간 딜레이해라!

딱 위에 설명한 4줄만 보면,
① 노란색 LED를 켜라.
② 그 상태로 1초간 유지해라.
③ 노란색 LED를 꺼라.
④ 그 상태로 1초간 유지해라.
이렇게 되니깐 결국, 1초간 LED가 켜지고 다음 1초간 LED가 꺼지고, 다시 1초간 켜지고, … 반복을 하겠네요.
즉, 1초 간격으로 LED가 켜졌다가 꺼졌다가를 반복할 것 같아요!

어떻게 아냐구요? 저도 제가 써놓고 의심이 되니깐 같이 확인해 보도록 합시다.
(이런 의심 아주 칭찬해~)

5. 아두이노 실제로 동작시켜서 확인해보기

자, 확인!
컴퓨터와 아두이노를 연결하고, 예제프로그램을 넣고,
아두이노 보드의 노란색 LED를 뚫어져라 째려봅시다.
어떻게 되나?

https://youtu.be/G9cGT6Macmc
1초 간격으로 LED On/Off 하기
https://youtu.be/VjP5U3TMlbs
2초 간격으로 LED On/Off 하기

오호, 우리의 추측이 맞은 것 같죠?

만약에 delay() 안의 숫자를 2000으로 바꾸면??????
네, 맞아요. 1000일때는 1초 간격으로 깜빡깜빡 하던것이,
2000일 때는 2초 간격으로 LED가 까암빠악까암빠악 할거에요
(2초 느낌을 글로 표현한건데 괜찮았나요??ㅋㅋㅋ 옳지 못했다면 죄송ㅋㅋ)

아무튼, 뭔가 우리가 코딩한 것에 따라 변화가 LED를 통해 눈으로 확인되니까 신기하네요 ㅋㅋ
여러분은 어땠나요? 저만 그런건 아니죠???ㅋㅋㅋ(저도 신기해요~ 라고 대답해주세요!…제발..)

오늘은 여기까지입니다. 다음에는 어떤걸 해볼지 한 번 고민해봐야겠어요!
그럼, 다음에 또 다른 예제와 함께 만나요~!! 안녕!

덧글 삭제

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다