지난 포스트 LED로 간단한 신호등 만들기에서 빨간색, 노란색, 초록색 세개의 LED를 사용해서 신호등을 만드는 법을 알아보았다. 이번 포스트에서는 RGB LED 하나로 신호등을 만드는 법을 알아보자.


  아래 사진에 보이는 LED가 RGB LED 혹은 3색 LED이다. 일반적인 LED와 달리 RGB LED는 다리 네개가 각각 아래 사진에서 처럼 빨간색 녹색 파란색 그리고 커먼 애노드(+) 로 구성된다. 커먼 애노드 RGB LED는 아래 사진에서 처럼 가장 긴 다리에 5V 전압을 넣고 Red에 Low 접압을 넣으면 빨간색 불이 들어오고 High 전압을 넣으면 빨간불이 꺼지고 G와 B에 대해서도 같은 방식으로 작동한다. 커먼 캐소드(-) RGB LED도 있는데 커먼 애노드(+) RGB LED와 달리 캐소드 다리에 0V를 넣고, R, G, B 다리에 High 전압을 넣어주면 각각 빨간, 녹색, 파란불이 들어온다.

RGB LED


  신호등을 만들기에는 빨간, 초록, 파란 불이 충분하지 않다. 노란색 불이 필요하다. 노란색 불을 켜기위해서 빛을 혼합해야 한다. 위 사진의 왼쪽 상단에 빛의 삼원색 혼합 다이어그램이 있는데 이를 참조하면, 빨간색 빛과 초록색 빛을 섞으면 노란색이 된다. 즉, 빨간색과 초록색 불을 동시에 켜면 노란색 불을 얻을 수 있는 것이다. 


  신호등을 만들기 위해서 아래와 같이 RGB LED를 연결하면 된다. 필자는 G04, G17, G18에 차례대로 R, G, B를 연결했다. 신호등을 만들기 위해서는 파란 빛이 필요하지 않으므로 B를 연결할 필요는 없다.

RGB LED

#include <stdio.h>
#include <wiringPi.h>

int main (void)
{
  int i = 0;
  printf("Traffic Light");

  if (wiringPiSetup () == -1)
    return 1 ;

  pinMode (7, OUTPUT) ;
  pinMode (0, OUTPUT) ;

  for(;;){
    for (i = 0; i < 3; i++){
      switch(i) {
      case 0:
        digitalWrite(7, 0);
        digitalWrite(0, 1);
        delay(3000);
        break;
      case 1:
        digitalWrite(0, 0);
        delay(800);
        break;
      case 2:
        digitalWrite(7, 1);
        delay(3000);
        break;
      }
    }
  }
  
  return 0 ;
}

  위 코드는 지난 포스트의 LED 신호등 코드를 조금 수정 한 것이다. 수정된 부분을 보면 19번째 줄에서 이전 프로그램에는 7번 핀에 1을 출력해서 빨간 불을 켰었는데 여기서는 0을 출력해서 빨간 불을 켠다. 위에서 설명했듯, 필자의 RGB LED가 커먼 애노드 이기 때문이다. 20번째 줄은 반대로 0번 핀에 1을 출력해서 초록색 불을 끈다. 24번째 줄은 빨간 불이 켜진 상태에서 초록색 불을 켜서 노란색 불이 켜지게 된다. 마지막으로 28번째 줄은 빨간색 불을 꺼서 초록색 불만 켜지게 만든다. 이 코드를 실행하면 아래 동영상 같이 하나의 LED로 신호등을 볼 수 있다.



블로그 이미지

작은 조약돌

공돌이 형과 글쟁이 동생 쌍둥이 형제의 낙서장

,