지난 포스트에서 WiringPi로 GPIO 핀을 제어하여 LED를 깜빡이는 방법을 알아보았다. 이번 포스트에서는 조금 수정해서 신호등을 만드는 법을 알아보자.


  우선 아래 사진처럼 LED와 저항을 연결한다. 빨간색, 노란색, 초록색 LED +극에 저항을 연결하고 G04, G17, G18을 차례대로 연결하고, -극에는 접지를 연결한다.

라즈베리파이 신호등


라즈베리파이 신호등

#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) ;
  pinMode (1, OUTPUT) ;
  for(;;){
    for (i = 0; i < 3; i++){
      switch(i) {
      case 0:
        digitalWrite(7, 1);
        digitalWrite(1, 0);
        delay(3000);
        break;
      case 1:
        digitalWrite(0, 1);
        digitalWrite(7, 0);
        delay(800);
        break;
      case 2:
        digitalWrite(1, 1);
        digitalWrite(0, 0);
        delay(3000);
        break;
      }
    }
  }
  
  return 0 ;
}

  위 코드는 WiringPi를 이용하여 신호등을 만든 간단한 프로그램이다. 조금씩 살펴보자. 2번째 줄은 wiringPi 헤더파일을 불러와서 WiringPi 라이브러리를 사용하기 위해서는 꼭 필요하다. 9번째 줄은 WiringPi를 시작하기 전에 셋업 하는 함수이다. 12-14줄은 7, 0, 1 핀을 출력핀으로 만들어 주는 것이다. 참고로 WiringPi 핀넘버 7, 0, 1은 순서대로 BCM 핀넘버 4, 17, 18이다. 19번째 줄은 7번핀에 1을 출력해서 빨간색 LED에 불을 켜는 것이고, 20번째 줄은 1번 핀에 0을 출력해서 초록색 LED의 불을 끄는 것이다. 21번째 줄은 3초동안 현재 상태를 유지 즉, 빨간불을 3초동안 켜고 있는 것이다. 따라서 case0 일때는 빨간불을 켜고, case1 일때는 노란불을 켜고, case2 일때는 초록불을 켜는 것으로 아래 동영상 같은 간단한 신호등이 완성 된다.



블로그 이미지

작은 조약돌

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

,