티스토리 뷰

IT

3. Blink LED (LED 깜박임) 구현하기

Dante2k™ 2015.08.08 01:12

 가장 간단하게 LED를 끄고 켤 수 있는 기능을 구현해보려고 합니다.


 예제에 관해서는 회로를 구성하는 방법과 소스는 많이 있습니다. 이를 정리하여 보겠습니다.


회로 그림은 fritzing 이라는 리눅스 회로도 작성 툴을 사용하여 작성하였습니다. 이거 꽤 좋습니다.


1. 회로 구성하기



회로를 구성하는데 사용한 요소는 다음과 같습니다.

1. ARDUINO UNO x1

2. 적색 발광 LED x1

3. 저항 220옴 x1

4. 브레드보드, 전선 4가닥


초등학교 과학시간을 생각하면 단순히 전원과 LED만 연결하면 LED에 불이 들어와야 정상입니다. 하지만 잘 생각해봐야 하는 것이 LED는 정방향으로 연결되면 전선이 연결된 것과 같습니다. 그렇다면 건전지같은 전원의 +단자와 -단자가 연결되어 있다는 의미입니다. 이런 경우 건전지에 발열이 발생하거나 심하면 터지기도 합니다. 물론 UNO 보드도 영향이 가겠지라고 생각되는데, UNO보드의 경우는 회로가 PULLDOWN 방식으로 설계되어서 그런 경우는 없다고 하네요. (하지만 회로를 구성할 때는 항상 적정한 저항을 구성해야 하는 것이 기본입니다. 그렇지 않으면 무한한 전류가 흘러 힘들게 설계한 회로가 홀랑 타버릴 수도 있고, 없으면 애써 구성한 회로가 전기를 다 잡아먹겠지요. 아직 경험은 없지만;;;)


(다시한번 말하지만 Fritzing은 정말 좋은 프로그램입니다.;;;)


위는 Fritzing에서 스케메틱으로 구현된 이미지 입니다.간단히 UNO의 그라운드 단자와 디지털 13번 단자를 이용하여 회로를 구성한 것을 한눈에 잘 보여줍니다.


실물은 다음과 같습니다.



SAMSUNG | SHV-E250S | 1/30sec | F/2.6 | 0.00 EV | 3.7mm | ISO-80 | 2015:08:08 00:58:11



2. 프로그램 개발


이제 하드웨어는 구현되었으므로 소프트웨어를 구현할 차례입니다.



/**
 * 디지털 13핀을 이용하여 LED를 순차적으로 켜고 끄는 예제
 */

// LED를 연결한 핀번호
int PIN_LED = 13;

void setup() {
  // 최초 실행시 한번 실행

  // 13번 핀을 출력 모드로 설정한다.
  pinMode(PIN_LED, OUTPUT);
}

void loop() {
  // 메인코드를 기술, 반복적으로 실행된다.

  // 디지털 13번 핀으로 HIGH 신호를 전송한다.
  digitalWrite(PIN_LED, HIGH);
  // 1초간 딜레이
  delay(1000);
  // 디지털 13번 핀으로 LOW 신호를 전송한다.
  digitalWrite(PIN_LED, LOW);
  // 1초간 딜레이
  delay(1000);
}


소스에 주석을 꼼꼼하게 달아서 표시하였습니다. C코드와 동일하므로 프로그래밍을 어느정도 알고 있다면 충분히 내용을 확인할 수 있을 거라 생각됩니다.


해당 프로그램을 컴파일하고 아두이노에 업로드하여 잘 작동하는지 확인해봐야겠지요.


아두이노 IDE에서 Ctrl+U를 클릭하면 컴파일이 정상적으로 마무리되면 업로드되며, 바로 초기화되고 작동을 시작합니다.

SAMSUNG | SHV-E250S | 1/30sec | F/2.6 | 0.00 EV | 3.7mm | ISO-64 | 2015:08:08 00:58:45


SAMSUNG | SHV-E250S | 1/30sec | F/2.6 | 0.00 EV | 3.7mm | ISO-80 | 2015:08:08 00:58:41



이로써 아두이노를 이용한 최초 하드웨어 구성과 프로그램을 만들어서 작동시켜 봤습니다.


위 예제의 Fritzing 하드웨어 구성도 파일과 소스 파일을 공유합니다.



_20150808_001_BlinkLED.ino

BlinkLED Sketch.fzz



끝.

댓글
댓글쓰기 폼