Arduino 002 - LED깜빡이 pinMode(), digitalWrite(), delay(), HIGH, LOW

과학이야기/물리학 2015. 7. 22. 11:17

Arduino 002 - LED깜빡이 pinMode(), digitalWrite(), delay(), HIGH, LOW

아두이노를 만나서 가장 먼저 해보는 예제입니다. 일정한 시간 간격으로 LED를 깜빡이게 하는 기능입니다.


준비물 : 아두이노보드, 브레드보드, LED, 저항(330Ω), 점프선


1. LED와 저항을 직렬로 연결합니다.

2. 아두이노 보드의 D13번 포트와 LED의 (+)선을 연결합니다.

3. 저항을 아두이노보드의 GND에 연결합니다.

4. 다음 소스를 아두이노 IDE에서 입력한 후 프로그램을 아두이노 보드에 업로드합니다.


아두이노 소스


void setup() {

   pinMode(13, OUTPUT);

}


void loop() {

  digitalWrite(13, HIGH);

  delay(1000);            

  digitalWrite(13, LOW);

  delay(1000);      

}


이 소스를 먼저 분석하겠습니다. 아두이노는 크게 두 부분으로 나눌 수 있습니다. 처음 시작할 때 호출되는 함수인 setup()과 무한 반복하는 loop()함수입니다.

먼저 setup()함수를 보면 하는 일이 핀모드를 설정했습니다. 핀모드는 pinMode()함수를 이용하여 세팅을 합니다. 제가 사용하고 있는 아두이노 우노 보드의 경우에 14개의 디지털 핀을 가지고 있습니다. 이 핀을 통해 디지털 신호(HIGH, LOW)를 입력 받거나(INPUT), 출력(OUTPUT)을 할 수 있습니다. 디지털 핀을 이용하고자 할 때는 그 핀이 입력용으로 사용할 것인지, 출력용으로 사용할 것인지를 미리 결정해 주어야 하는데 이것을 지정하는 함수가 pinMode()입니다.


pinMode()함수 사용법은 다음과 같습니다.


pinMode(pin, mode);


pin : 사용하고자 하는 핀 번호(0 – 13)

mode : 입력으로 사용할 때는 INPUT, 출력으로 사용할 때는 OUTPUT


제가 사용한 pinMode(13, OUTPUT);은 13번 핀을 출력용으로 사용한다는 의미를 가지고 있습니다.


이제 무한 반복 함수인 loop()함수로 넘어가겠습니다.

디지털 출력을 하는 함수는 digitalWrite()함수입니다. 사용 방법은 다음과 같습니다.


digitalWrite(pin, value);


pin : 사용하는 핀 번호(setup()함수에서 입력이나 출력으로 지정한 핀)

value : HIGH 또는 LOW


이 예제에서 13번 핀을 출력용으로 지정했기 때문에 ditalWrite(13, HIGH)라고 하면 13번 핀으로 HIGH를 출력합니다. 또한 ditalWrite(13, LOW)라고 하면 13번 핀으로 LOW를 출력합니다. 여기서 HIGH와 LOW가 무슨 뜻인지 알아보겠습니다.

디지털 신호에서 HIGH는 5V를 출력한다(3.3V용 아두이노 보드는 3.3V)는 의미를 가지고, LOW는 0V를 출력한다는 의미를 가지고 있습니다.


digitalWrite(13, HIGH);

delay(1000);

ditalWrite(13, LOW);

delay(1000);


위 소스는 13번 핀으로 5V를 1초(1000ms)동안 출력하고, 다시 1초 동안 0V를 출력하다는 의미를 가지고 있습니다. 시간에 따라 전압이 변하는 과정을 그래프로 그리면 다음과 같습니다.


HIGH상태, 즉 5V가 출력될 때는 1초 동안 LED에 불이 켜지고, LOW상태, 즉 0V일 때는 1초동안 LED가 꺼지게 됩니다. 이 과정이 loop()함수 안에 있게되면 계속 이 과정을 반복하게 되어 계속 LED가 깜빡이게 됩니다.


[새길]








설정

트랙백

댓글