[아두이노 강좌] 01. LED 깜빡이기

본 게시물에서는 아두이노를 프로그래밍하여 아두이노 상의 LED를 깜빡거리게 하는 내용을 설명합니다.
overview.png

필요한 장비

이름

수량

uno_r3_web.jpg

Arduino Uno R3 1

usbcable_MED.jpg

USB케이블

(type A-B)

1

보드상의 L표시 LED

아두이노는 양쪽 사이드에 일렬의 커넥터를 가지고 있어 다른 디바이스를 연결하거나 쉴드등을 연결할 수 있습니다. 하지만 아두이노 보드상에도 LED를 하나 가지고 있어 스케치에서 제어를 할 수 있는데 LED옆에 L이라고 표시가 되어 있어 흔히 L LED라고 부릅니다. (아래에 동그라미로 표기된 부분 참조)

uno_r3_L_circled.jpg
leonardo_plugged_L_circled.jpg

'Blink' 예제 로딩하기

아두이노에 USB케이블을 연결하여 전원을 공급하면 아두이노의 LED가 이미 깜빡이는 것을 볼 수 있을 수 있습니다. 이것은 보통 아두이노를 생산할때 미리 blink 스케치를 인스톨하였기 때문에 그렇습니다.

여기서는 blink 예제에서 LED가 깜빡이는 속도 등을 조절하여 다시 아두이노를 재 프로그래밍 하여보도록 하겠습니다.

아두이노 IDE를 www.arduino.cc에서 다운받아 셋업하고, 올바른 시리얼 포트를 찾아 아두이노를 컴퓨터와 통신가능한 상태로 만듭니다. 이 통신연결을 이용하여 아두이노에 프로그래밍을 하겠습니다.

아두이노 IDE는 사용가능한 많은 예제 스케치들을 포함하고 있습니다. Blink 스케치는 IDE의 메뉴 File --> Examples --> 0.1 Basics에서 찾을 수 있습니다.

opening_blink_example.jpg
스케치 윈도우가 열리면 적절하게 화면 크기를 조절하여 스케치 전체가 보일 수 있게 하시는 것이 좋습니다.
ide_blink.jpg

Blink 스케치 복사본 저장하기

아두이노 IDE에 포함된 예제 스케치 파일들은 읽기만 가능합니다. 수정을 하려면 다른 파일 형태로 저장을 하여 주어야 합니다. IDE에서 Save As 옵션을 선택하여 'MyBlink'라는 이름으로 저장합니다.

saving_blink_as_my_blink.jpg
저장을 하게 되면 sketchbook에서 MyBlink를 확인 할 수 있습니다. 차후에 다시 스케치 코드를 살펴보려면 File --> Sketchbook 메뉴에서 스케치를 로드 할 수 있습니다.
finding_sketch_in_sketchbook.jpg

보드에 스케치 업로드 하기

아두이노 보드를 USB 케이블을 이용하여 컴퓨터에 연결하고 Board Type과 Serial Port가 올바르게 설정되어 있는지 확인합니다.

아두이노 IDE의 하단을 보면 현재 셋팅되어 있는 환경이 나타납니다.

bottom_of_ide_showing_board_port.jpg
아래의 그림과 같이 생신 Upload버튼을 클릭합니다.
upload_button.jpg

IDE의 하단의 상태영역을 보면, 프로그레스바와 메세지가 나타나는 것을 볼수 있습니다. 스케치를 컴파일한다고 나타나 있네요.

컴파일이 끝나니 상태영역에 Uploading이라는 메세지가 나타났습니다. 컴파일된 스케치가 아두이노로 전송이 되고 있는 상태입니다. 아두이노상의 LED가 깜빡거립니다.

upload_2_uploading.jpg
상태가 Done으로 변경되었습니다.
그리고 업로딩한 스케치가 전체 32,256 바이트에서 1,084 바이트를 사용하고 있다고 말해주고 있습니다. 만약 컴파일중에 아래와 같은 에러 메세지가 나타난다면 아마도 보드가 컴퓨터와 연결되지 않아서 나타나거나 드라이버가 설치되지 않거나 잘못된 시리얼 포트가 선택되어 나타나는 문제입니다.
upload_4_failed.jpg
업로드가 끝나면 리셋되고 LED가 깜빡이기 시작합니다.

Blink 스케치 코드는 어떻게 동작하는가?

아래는 blink 스케치 코드입니다.
  1. /*
  2. Blink
  3. Turns on an LED on for one second, then off for one second, repeatedly.
  4. This example code is in the public domain.
  5. */
  6. // Pin 13 has an LED connected on most Arduino boards.
  7. // give it a name:
  8. int led = 13;
  9. // the setup routine runs once when you press reset:
  10. void setup() {
  11. // initialize the digital pin as an output.
  12. pinMode(led, OUTPUT);
  13. }
  14. // the loop routine runs over and over again forever:
  15. void loop() {
  16. digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
  17. delay(1000); // wait for a second
  18. digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
  19. delay(1000); // wait for a second
  20. }

첫번째 코드는 보는 바와 같이 아래와 같습니다.

  1. int led = 13;

코드에 코멘트로도 설명이 되어 있지만 led라는 변수를 선언하여 이름을 부여하고 led가 붙어 있는 13핀을 의미하는 숫자 13이 할당되었습니다.

다음으로는 setup 함수가 나와 있는데 이 함수는 아두이노가 리셋되고 한번만 실행이 되는 함수입니다. 그렇게 때문에 대부분 초기화 관련 루틴을 넣어 사용하는 함수 입니다.

  1. void setup() {
  2. // initialize the digital pin as an output.
  3. pinMode(led, OUTPUT);
  4. }

모든 아두이노 스케치는 반드시 setup 함수를 가지고 있어야 합니다. 여기에서는 LED핀을 출력모드로 설정하라는 코드가 포함되어 있습니다.

모든 스케치에 setup함수가 포함되어야 하는 것처럼 loop함수도 반드시 포함되어 있어야 합니다. setup함수가 리셋후 한번만 실행되는 것과는 달리 loop함수는 계속 반복 됩니다.

  1. void loop() {
  2. digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
  3. delay(1000); // wait for a second
  4. digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
  5. delay(1000); // wait for a second
  6. }

loop 함수안에는 LED핀을 켜는(HIGH) 명령이 있으며, 1초동안 딜레이 후 LED핀을 끄는 명령을 담고 있으며, 끈 후에도 역시 1초동안 딜레이를 주는 명령으로 작성되어 습니다.

깜빡이는 속도변경하기

LED가 깜빡이는 속도를 변경시키려면 무엇을 변경해야 할까요? delay함수의 파라메터값인 1000을 변경하면 LED가 깜빡이는 속도를 변경할 수 있습니다.
만약 1000을 500으로 변경한 후 컴파일하여 업로딩한다면 LED가 이전 보다 두배 빨리 깜빡이는 것을 볼 수 있습니다.
Comments