HW 공작소

아두이노 5: 교통 신호등 구현

kusson 2017. 5. 20. 16:47
반응형
728x170

이번에는 아두이노로 교통신호등을 구현해 보도록 하겠다. 교통 신호등은 녹색불과 빨간불은 좀 오래 들어오고 그사이 노란불은 잠시 들어왔다 꺼진다. 차측의 신호등과 보행자측의 신호등은 서로 반대로 돌아가는데 차선쪽의 빨간불이 들어오면 보행자 쪽은 녹색불이 들어온다. 이러한 일련의 신호등 프로세서를 아두이노로 구현해 보자.

 

 

아두이노 우노 보드의 10번과 11번을 입력으로 설정하고 2번에서 6번을 출력으로 설정한다. 10번 핀은 차량쪽 신호등 시작 스위치에 연결하고 11번 핀은 보행 스위치에 연결한다. LED에서 오른쪽 세개는 차량쪽 신호등이고 왼쪽 2개의 녹색 신호등은 보행자 신호등이다.

 

//실제 신호등 모형. 빨간불 들어오면 보행 신호등도 같이 들어오고

//차선 녹색불이 들어오면 보행 신호등은 꺼짐.

void setup() {

  pinMode(10, INPUT);                               //10번핀을 입력으로 설정한다.

  pinMode(11, INPUT);                               //11번핀을 입력으로 설정한다.

    for(int j=2; j<=6; j=j+1){                        // 2번부터 6번 핀까지는 출력으로 설정한다.

    pinMode(j,OUTPUT);}

}

 

void loop(){

  int val = digitalRead(10);                         // 10번핀의 값을 읽어서 정수형 변수 val에 입력한다.

    if(val == 1){                                      // val 변수의 값이 1이면 다음으로 넘어간다.

        while(1){                                      // 1번이 들어왔으면(즉 참이면) 다음을 실행한다.

           digitalWrite(2, HIGH);                   // 2번핀에 5V 값을 출력한다. (LED를 On 시킨다)

digitalWrite(5, LOW);                   // 5번핀에는 0V의 값을 출력한다. (LED를 Off 시킨다)

digitalWrite(6, LOW);

delay(3000);                               //3초간의 지연 시간을 준다.

digitalWrite(2, LOW);

digitalWrite(3, HIGH);

delay(1000);

digitalWrite(3, LOW);

digitalWrite(4, HIGH);

digitalWrite(5, HIGH);

digitalWrite(6, HIGH);

delay(3000);

digitalWrite(4, LOW);

 

  int noCar = digitalRead(11);        // 보행자 스위치를 누르면 보행자 신호등이 들어온다.

   if (noCar == 1) {                   

    digitalWrite(2, LOW);

    digitalWrite(3, LOW);

    digitalWrite(4, HIGH);

    digitalWrite(5, HIGH);

    digitalWrite(6, HIGH);

    }

   }

      }

}

 

 

아두이노 스케치상에 위와 같이 입력하고 컴파일과 업로드를 한다. 그리고 우측 스위치 즉 차량쪽 스위치를 누른다. 에러가 없다면 우리가 길에서 보는 신호등과 같은 동작을 볼 수 있을 것이다.

 

 

3초동안 녹색불이 들어온다.

 

 

녹색불이 꺼지고 1초동안 노란색 불이 들어온다.

 

3초동안 차량쪽 빨간불과 보행자쪽 녹색불이 들어온다.

 

 

 위의 과정을 계속 반복한다. 좌측의 스위치는 보행자 스위치이다. 한적한 길이나 사람이 잘 다니지 않는 길에는 차량쪽 녹색불만 계속 켜놓고 보행자쪽 신호등은 들어오지 않게 해 놓은 곳이 있다. 이런곳에 보행자 스위치를 설치해 두면 사람이 횡단보도에 와서 저 스위치를 누르면 차량쪽 빨간불이 켜지면서 보행자쪽의 녹색불이 켜진다. 요즘은 도로에서 심심치 않게 저런 스위치를 볼수 있을 것이다.

반응형
그리드형