본문 바로가기
아두이노 (Arduino)

아두이노 - RGB LED 모듈

by JaeBaek 2020. 9. 30.

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

댓글