아두이노 RGB LED 스위치 제어 - adu-ino RGB LED seuwichi jeeo

공지 목록

공지글

글 제목작성일

공지 LUCKIT - 디바이스마트 입점

2019. 4. 12.

RGB LED를 스위치를 사용하여 제어해 보자.

이전에 했던 RGB LED의 특성을 참고하여,

스위치 3개와 RGB LED를 연결하는 회로를 만들어 보자.

(이전 RGB LED연결과 스위치를 연결하여 LED를 제어하는 챕터를 참고한다.)

아두이노 RGB LED 스위치 제어 - adu-ino RGB LED seuwichi jeeo

이전 회로와 동일하게 스위치에는 10K옴의 저항을 사용하며, RGB LED에는 270옴의 저항을 사용하였다.

위와 같이 구현한 이유는 RGB LED의 특성인 RED, GREEN, BLUE 3가지 색상은 물론 3가지 색상 각각을 스위치 버튼을 사용하여 혼합된 색상의 확인이 가능하다.

이번 회로는 이전에 해봤던 회로 및 코드의 응용버전으로 간단한 코드로 동작이 가능하다.

void setup() {

pinMode(11,OUTPUT);

pinMode(10,OUTPUT);

pinMode(9,OUTPUT);

// 11,10,9번핀을 출력으로 사용한다.(RGB LED) //

pinMode(5,INPUT);

pinMode(4,INPUT);

pinMode(3,INPUT);

// 5,4,3번핀을 입력으로 사용한다.(SWITCH) //

}

void loop() {

int sw1 = digitalRead(5);

int sw2 = digitalRead(4);

int sw3 = digitalRead(3);

// 5,4,3번핀을 읽어 sw1,sw2,sw3이름의 변수에 넣음 //

if(sw1 == HIGH) {

digitalWrite(11,HIGH);

}

else {

digitalWrite(11,LOW);

}

// sw1(5번핀)이 HIGH 이면 11번핀(RED)에 HIGH 를 넣어주고 (LED 켜짐) 아니면 LOW를 넣어줌 (LED 꺼짐) //

if(sw2 == HIGH) {

digitalWrite(10,HIGH);

}

else {

digitalWrite(10,LOW);

}

// sw2(4번핀)이 HIGH 이면 10번핀(GREEN)에 HIGH 를 넣어주고 (LED 켜짐) 아니면 LOW를 넣어줌 (LED 꺼짐) //

if(sw3 == HIGH) {

digitalWrite(9,HIGH);

}

else {

digitalWrite(9,LOW);

}

// sw3(3번핀)이 HIGH 이면 9번핀(BLUE)에 HIGH 를 넣어주고 (LED 켜짐) 아니면 LOW를 넣어줌 (LED 꺼짐) //

}

코드 작성후 컴파일하면 각각의 스위츠를 누르면 R,G,B색상으로 동작하여 한번 두가지 이상의 스위치를 누르면 각각의 색상이 더해진 색상으로 LED가 동작하게 된다.

아두이노 RGB LED 스위치 제어 - adu-ino RGB LED seuwichi jeeo
아두이노 RGB LED 스위치 제어 - adu-ino RGB LED seuwichi jeeo

 안녕하세요~~ 오늘은 RGB LED를 버튼 1개를 가지고 누를때마다 불빛이 바뀌는 것을 해볼 겁니다. 우선 준비물은 아두이노 보드(UNO), RGB LED, 버튼 1개, 아두이노 케이블 입니다. 

 우선 회로를 구성해야 하는데요, 일단 사진 처럼 구성해주세요.

아두이노 RGB LED 스위치 제어 - adu-ino RGB LED seuwichi jeeo

 제가 말했듯이 제 RGB LED는 애노드 타입이기 때문에 GND 말고 5V에 연결을 해야됩니다. 그리고 R,G,B에 하나씩 디지털 핀 아무거나 연결해주시고, 버튼도 GND는 저항으로 따로 빼고 디지털핀 아무곳에나 꽂아주시면 되는데 디지털 13핀에 꽂아주시면 버튼을 눌렀을 때 잘 눌렸는지 보드에서 확인이 가능하기 때문에 디지털 13번 핀에 꽂아주시는 것이 좋을 것 같아요. 그리고 버튼에서도 5V가 필요하기 때문에 5V를 반대편에 연결해줍니다. 이렇게 회로 구성은 끝났습니다. 이제 코드를 작성해야 되는데요 저는 버튼을 누를 때마다 7번이 달라지기 때문에 코드가 좀 깁니다. 그래도 잘 봐주세요. 

아두이노 RGB LED 스위치 제어 - adu-ino RGB LED seuwichi jeeo

아두이노 RGB LED 스위치 제어 - adu-ino RGB LED seuwichi jeeo

아두이노 RGB LED 스위치 제어 - adu-ino RGB LED seuwichi jeeo

아두이노 RGB LED 스위치 제어 - adu-ino RGB LED seuwichi jeeo

 일단 저는 디지털 핀으로 하는 것보다 R,G,B를 이용해서 색상 구분하는 것이 편하기 때문에 디지털 핀을 각각 R,G,B로 설정했습니다. 그리고 i라는 변수가 필요하기 때문에 i도 만들어 주었고여.

 그리고 디지털 핀 중에 R,G,B는 LED에 연결돼있으니까 출력이기 때문에 pinMode를 써서 OUTPUT(출력) 으로 설정해 주었고 버튼에 연결된 핀에는 입력이기 때문에 INPUT(입력) 으로 설정해주었습니다.

 또한 버튼이 눌릴 때마다 불빛이 바뀌어야 되는데요, 그래서 digitalRead(13)==1을 써주어서 눌리게 만들었습니다.

 그리고 눌릴 때 i라는 값이 어느 범위 안에서만 증가를 하고 그 범위를 벗어나면 0이 되어 다시 증가하는게 반복되도록 코드를 써주었습니다. 또 delay는 꼭 써주어야 될 게 버튼을 누르는 시간을 설정해 주는 것인데 이걸 설정 안해주시면 불빛이 막 바뀝니다.

 하지만 너무 길게 할 경우 잘 안넘어가기 때문에 적당하게 300(0.3초) 로 설정해주었습니다. 이제 i값에 따라서 색깔이 바뀌게 해주는 것인데 이거는 여러분 마음대로 해주셔도 됩니다. 저번에도 말했듯이 digitalWrite는 출력이기 때문에 불을 킬 수 있습니다. 그래서 R,G,B중 뭘 키고 끌것인지 제어할 수 있는데요, 제 RGB LED는 애노드 타입이기 때문에 1이 꺼지는 것이고 0이 켜지는 것입니다(원래는 반대). 

 글은 이쯤에서 마치겠습니다~~ 읽어주셔서 감사합니다ㅎㅎ