2015년 4월 18일 토요일

[00016] 아두이노로 LED 깜박이기

 아두이노 우노에는 실습용 LED가 실장되어 있는데 이것은 13번 핀과 연결되어 있다. 아래 그림과 같이 아두이노마크 근처에 위치하고 있다.(빨간 원 안)

[그림 1] 아두이노 우노의 내장 LED

이것을 이용하여 깜박이는 예제는 아두이노 IDE에 미리 탑재되어서 제공되는데 다음과 같이 예제파일을 선택하여 읽어들일 수 있다.

[그림 2] Blink 예제 읽어들이기

소스코드는 다음과 같다. (주석문은 삭제하였다.)

int led = 13;
void setup() {
   pinMode(led, OUTPUT);
}
void loop() {
   // turn the LED on (HIGH is the voltage level)
   digitalWrite(led, HIGH);
   delay(1000); // wait for a second
   // turn the LED off by making the voltage LOW
   digitalWrite(led, LOW);
   delay(1000); // wait for a second
}

이 예제의 구조를 살펴보면 먼저 눈에 띄는 것이 있는데 setup() 함수와 loop() 함수이다. 이 두 함수는 아두이노 프로그램의 전체적인 구조를 잡아주는 역할을 한다.

    ⁎ setup() 함수
       • 아두이노 프로그램이 실행될 때 맨 처음에 단 한 번 호출되어 수행된다.
       • 따라서 여기에 각종 장치를 초기화하거나 초기값을 설정하는 코드가 오게 된다.

    ⁎ loop() 함수
        • setup()함수 실행 후 수행되면 계속 반복 수행된다.
        • 아두이노에 연결된 장치들을 구동시키는 코드가 위치한다.

setup()함수 내에서 pinMode()함수를 사용하는데 이 함수는 핀을 입력(INPUT) 혹은 출력(OUTPUT)으로 사용할 지를 설정하는 함수이다. 첫 번째 인자로 핀의 번호가 두 번째 인자로 INPUT, 혹은 OUTPUT이라는 상수를 넘겨주면 된다. pinMode(led, OUTPUT) 은 led(13번)을 출력(OUTPUT)으로 사용하겠다고 설정하는 것이다.

   ⁎ pinMode(pinNumber, INPUT/OUTPUT) 함수
       • pinNumber 핀을 입력(INPUT) 혹은 출력(OUTPUT)으로 사용할 지를 지정한다.
       • pinNumber는 우노의 경우 0,1,2, … 13, A0, A1, ...A6 중 하나이다.

loop()함수에서는 digitalWrite()함수를 사용했는데 이 함수는 핀으로 출력값을 내보내는 작업을 수행한다. 첫 번째 인자로 핀 번호를 받고 두 번째 인자로 HIGH 혹은 LOW 상수를 받는다. digitalWrite(led, HIGH) 명령은 led 핀에 HIGH 신호를 내보내므로 LED가 켜지게 된다. 반대로 digitalWrite(led, LOW) 명령은 led 핀에 LOW 신호를 내보내므로 LED가 꺼지게 된다.

    ⁎ digitalWrite(pinNumber, HIGH/LOW) 함수
         • pinNumber 핀이 출력일 경우에 사용한다.
         • 1값을 내보낼지 (HIGH) 0값을 내보낼지(LOW)를 지정한다.

delay()함수는 입력된 시간만큼 아무 일도 안하고 멈춰있는 동작을 수행한다. delay(1000)은 1000ms 동안 지연시키는 것이다. 입력받는 숫자는 ms 단위이다.

    ⁎ delay(time) 함수
         • time ms 만큼 지연 (아무런 일도 안 하고 멈춰있음)한다.

이 함수의 입력 인자가 밀리세컨드(ms) 단위임을 유의해야 한다.


댓글 없음:

댓글 쓰기