본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 3색 신호등 모듈을 사용해서 신호등 구성해 보기

by 오마이엔지니어 2021. 4. 20.
반응형

Arduino Uno 로 3색 LED 모듈을 사용해서 신호등을 만들어 보고, 조도 센서를 활용해서
밝기에 따라서 LED를 제어해 보는 프로젝트 입니다

<아두이노 3색 신호등 모듈 이미지>

아두이노와 호환 가능한 3색(빨강,노랑,초록) 신호등 모듈로
R/Y/G 3색 LED가 PCB(저항이 달려있어 별도의 저항이 필요없음)에 장착되어 있습니다
디지털,PWM 신호를 이용하여 R/Y/G LED를 제어할 수 있습니다
동작 전압은 5V이며, 부하 전류는 LED당 20mA 입니다
3색 RGB LED 모듈과 유사하다고 볼 수 있습니다

 
사용된 부품

Arduino Uno R3 (Italy)
아두이노 3색 신호등 모듈
CDS 조도센서 모듈
미니브래드보드
점퍼케이블(숫놈-숫놈)
막대저항 10K Ohm


구성 배선도-3색 신호등 구성해 보기

구성 배선도-조도 센서로 밝기에 따라 3색 LED 제어해 보기

 

사용된 예제소스

신호등.txt
0.00MB
CDS_신호등.txt
0.00MB


테스트 방법
별도의 라이브러리를 사용하지 않으므로 테스트 방법은 간단합니다

위 첨부된 예제 소스를 다운로드 해서 업로드 해주고 테스트 하면 됩니다

먼저 신호등 예제를 살펴보면
const int RED_PIN = 11;    //RED LED와 디지털 11 핀 연결
const int GREEN_PIN = 10;  //GREEN LED와 디지털 10 핀 연결
const int BLUE_PIN = 9;    //BLUE LED와 디지털 9 핀 연결
BLUE PIN 9번에 YELLOW 노란색 LED를 연결해 주면 됩니다
3색 RGB LED 모듈 예제를 그대로 사용했기 때문입니다

delay(2000);                   //2초 대기
딜레이 타임 2000을 조정해서 신호등 처럼 원하는 대기 시간이 지나고
3색 LED가 변경되며 점등될수 있도록 해봅니다

두번째 CDS_신호등 예제를 테스틀 할때는
조도센서 CDS GL5537을 사용하며 (꼭 GL5537 모델을 사용해야만 하는것은 아닙니다)
막대저항 10K Ohm 을 사용해서 (+)쪽을 풀업으로 5V와 연결해 줍니다

const int ledpin=8;
const int ledpin1=9;
const int ledpin2=10;
const int sensorpin=A0;

핀설정을 확인할 수 있습니다, LED핀은 8(빨강 LED), 9(노랑 LED), 10(녹색 LED)번 세팅이며
조도센서는 아두이노 A0 핀에 연결 됩니다

int rate = analogRead(sensorpin);
Serial.println(rate);
시리얼 모니터로 밝기에 따른 조도센서의 아날로그 출력값을 확인할 수 있습니다

if(rate<200)
{
  digitalWrite(ledpin, HIGH);
  digitalWrite(ledpin1, LOW);
  digitalWrite(ledpin2, LOW);
}
else if(rate<300)
{
digitalWrite(ledpin, HIGH);
digitalWrite(ledpin1, HIGH);
digitalWrite(ledpin2, LOW);
}
else if(rate<500)
{
digitalWrite(ledpin, HIGH);
digitalWrite(ledpin1, HIGH);
digitalWrite(ledpin2, HIGH);
}
if 문을 사용해서 출력값이 200 이하일 때는 led핀 8번 빨강 LED만 켜짐 나머지 led1, led2핀은 꺼짐입니다
출력값이 300 이하일 때는 led, led1핀 8번, 9번 빨강, 노랑 LED가 켜짐 나머지 led2핀은 꺼짐입니다
출력값이 500 이하일 때는 led, led1, led2핀 8, 9, 10번 빨강, 노랑, 녹색 LED가 모두 켜짐입니다

조도센서 모델마다 출력값이 약간씩 틀리므로 테스트시 먼저 아두이노 시리얼 모니터로
밝기에 따른 조도센서 출력값 변화를 확인한 다음 200, 300, 500 의 숫자를 적당하게 변경한 다음 테스트하면 됩니다

else
{
digitalWrite(ledpin, HIGH);
delay(100);
digitalWrite(ledpin, LOW);
delay(100);
digitalWrite(ledpin1, HIGH);
delay(100);
digitalWrite(ledpin1, LOW);
delay(100);
digitalWrite(ledpin2, HIGH);
delay(100);
digitalWrite(ledpin2, LOW);
delay(100); 
}
else 문을 사용해서 그밖의 조도센서 출력값이 500을 넘어가는 경우는
ledpin, ledpin1, ledpin2 이 delay(100); 세팅으로 번갈아 가면서 켜졌다 꺼짐을 반복하게 됩니다

프로젝트 동영상 - 3색 신호등 구성해 보기


프로젝트 동영상 - 조도 센서로 밝기에 따라 3색 LED 제어해 보기


이렇게 간단하게 아두이노로 신호등을 구성해 보고
어두워지면 LED가 켜지는 가로등의 원리에 대해서도 알아볼 수 있습니다 


추가로 버튼(스위치)으로 신호등 모듈의 3색 LED를 제어해 보는 프로젝트입니다


구성 배선도-버튼(스위치)으로 3색 LED 제어해 보기

사용된 예제소스

3 LED Button.txt
0.00MB


테스트 방법

버튼(스위치는) 한쪽은 풀업저항 1K Ohm과 5V로 배선해서 아두이노 3번핀에 연결하고
나머지 반대쪽은 GND 그라운드로 연결합니다 

예제코드는 3색 RGB LED 예제를 그대로 사용하므로
레드는 11번, 옐로우는 10번, 그린은 9번에 순서대로 연결합니다

예제코드를 살펴보면
#define button 3
#define redLED 11
#define greenLED 10
#define blueLED 9
버튼은 3번, RGB LED의 레드핀은 11, 그린(대신 옐로우 연결)핀은 10, 블루(대신 그린 연결)핀은 9번 배선입니다

int state = 0;
int old = 0;
int buttonPoll = 0;
buttonPoll 과 old 로 버튼을 눌렸을때 

switch (state) {
 case 1: //Red color
 digitalWrite(redLED,HIGH);
 digitalWrite(greenLED,LOW);
 digitalWrite(blueLED,LOW);
 old = state;
 break;
 case 2: //Green color
 digitalWrite(redLED,LOW);
 digitalWrite(greenLED,HIGH);
 digitalWrite(blueLED,LOW);
 old = state;
 break;
 case 3: //Blue color
 digitalWrite(redLED,LOW);
 digitalWrite(greenLED,LOW);
 digitalWrite(blueLED,HIGH);
 old = state; 
 break;
 case 4: //Purple color
 digitalWrite(redLED,HIGH);
 digitalWrite(greenLED,LOW);
 digitalWrite(blueLED,HIGH);
 old = state; 
 break;
 case 5: //White color
 digitalWrite(redLED,HIGH);
 digitalWrite(greenLED,HIGH);
 digitalWrite(blueLED,HIGH);
 old = state; 
 break;
 default:
 digitalWrite(redLED,LOW);
 digitalWrite(greenLED,LOW);
 digitalWrite(blueLED,LOW);
 old = 0;
 break;
 }
5가지 case 로 RGB LED 색상을 제어합니다

프로젝트 동영상 - 버튼(스위치)으로 3색 LED 제어해 보기

반응형

댓글