RGB 모듈
RGB는 Red, Green, Blue의 머리글자를 딴 것으로서 빛의 3원색 조합이라고도 합니다. 3개의 빛을 가진 색을 조합함으로써 다양한 색을 만들 수 있고, 다리가 4개있고, 브레드 보드에 꽂기 쉬운 형태입니다.
★ 빛의 3원색
다음 그림은 빛의 3원색으로 조합을 할 수 있는 색의 형태입니다.
R+G=노랑
R+B=자홍,다홍색
G+B=청록색
으로 만들 수 있고, 각각의 RGB 빛의 세기를 조절함에따라서 다양한 색을 만들 수 있습니다.
RGB LED 연결
① 아두이노 연결
② 코드 작성 WITH DIGITAL
void setup(){
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
}
void loop(){
// RED
digitalWrite(11,HIGH);
digitalWrite(10,LOW);
digitalWrite(19,LOW);
delay(1500);
// GREEN
digitalWrite(11,LOW);
digitalWrite(10,HIGH);
digitalWrite(9,LOW);
delay(1500);
// BLUE
digitalWrite(11,LOW);
digitalWrite(10,LOW);
digitalWrite(9,HIGH);
delay(1500);
// R+G
digitalWrite(11,HIGH);
digitalWrite(10,HIGH);
digitalWrite(9,LOW);
delay(1500);
// G+B
digitalWrite(11,HIGH);
digitalWrite(10,LOW);
digitalWrite(9,HIGH);
delay(1500);
// R+B
digitalWrite(11,LOW);
digitalWrite(10,HIGH);
digitalWrite(9,HIGH);
delay(1500);
// R+G+B
digitalWrite(11,HIGH);
digitalWrite(10,HIGH);
digitalWrite(9,HIGH);
delay(1500);
// OFF
digitalWrite(11,LOW);
digitalWrite(10,LOW);
digitalWrite(9,LOW);
delay(1500);
}
다음 코드로 아두이노를 업로드해서 실행하면 순서대로 작동이 되는 것을 알 수 있습니다. 위 코드는 digital 값으로 RGB값을 설정했지만 아날로그 값으로도 설정이 가능합니다. 9,10,11 앞에 ~값이 적혀 있으므로 아날로그 값을 포함하는 디지털 값입니다. 따라서 digitalWrite( ,HIGH); 는 analogWrite( ,255); 값과 같다는 것을 알 수 있습니다.
RGB with Button
① 아두이노 연결
② 코드 작성 with digital
int red_p = 6; // LED 핀 넘버 설정
int green_p = 5;
int blue_p = 3;
int red_button = 10; // 스위치의 핀 넘버 설정
int green_button = 9;
int blue_button = 8;
int red = 0; // led의 출력 정도
int green = 0;
int blue = 0;
void setup() {
pinMode(red_p, OUTPUT); // LED 핀 출력 설정
pinMode(green_p, OUTPUT);
pinMode(blue_p, OUTPUT);
pinMode(red_button, INPUT_PULLUP); // 스위치 풀업 설정
pinMode(green_button, INPUT_PULLUP);
pinMode(blue_button, INPUT_PULLUP);
}
void loop() {
if (digitalRead(red_button) == LOW) {
if (red > 255)
red = 0; // red LED 출력이 255를 넘으면 변수 red를 0으로 초기화
red = red + 30;
delay(200);
}
else if (digitalRead(green_button) == LOW) {
if (green > 255)
green = 0;
green = green + 30;
delay(200);
}
else if (digitalRead(blue_button) == LOW) {
if (blue > 255)
blue = 0;
blue = blue + 30;
delay(200);
}
show_light(red, green, blue); // red, green, blue 값을 led에 출력
}
void show_light(int red, int green, int blue) {
analogWrite(red_p, red); // RGB LED red_p 핀이 연결된 자리에 변수 red만큼의 출력
analogWrite(green_p, green);
analogWrite(blue_p, blue);
}
※ result
각 버튼을 누르면 각 버튼에 해당하는 빛의 세기가 점점 세지면서 색이 합쳐지는 것을 확인할 수 있다.
'아두이노 (Arduino)' 카테고리의 다른 글
아두이노 - 부저 (Buzzer) (0) | 2020.10.02 |
---|---|
아두이노 - 조도 센서 & 가변저항기 (0) | 2020.09.30 |
아두이노 - LED & 버튼 (0) | 2020.09.30 |
아두이노 - 전원(Power) (0) | 2020.09.30 |
아두이노 우노 구성품 (0) | 2020.09.29 |
댓글