이 아두이노 튜토리얼에서는 RGB LED가 무엇인지, 아두이노 보드와 함께 사용하는 방법을 배웁니다.
RGB LED는 빨강, 녹색, 파랑 3가지 기본 색상을 혼합하여 다양한 색상을 표현합니다. 실제로는 빨강, 녹색, 파랑 3개의 개별 LED가 하나의 케이스에 패키징되어 있습니다. 그래서 4개의 리드를 가지며, 3개는 각 색상용이고 하나는 RGB LED 타입에 따라 공통 캐소드 또는 공통 애노드입니다. 이 튜토리얼에서는 공통 캐소드 타입을 사용합니다.
이 튜토리얼에 필요한 부품
RGB LED
3x 220옴 저항
아두이노 보드
브레드보드와 점퍼 와이어
아두이노와 RGB LED 회로도
캐소드를 접지에 연결하고 3개의 애노드를 220옴 저항을 통해 아두이노의 PWM 신호를 제공할 수 있는 3개 디지털 핀에 연결합니다. PWM으로 아날로그 출력을 시뮬레이션하여 LED에 다양한 전압 레벨을 제공함으로써 원하는 색상을 얻습니다.
소스 코드
아두이노 스케치를 살펴보겠습니다. 7, 6, 5번 핀을 사용하여 redPin, greenPin, bluePin으로 명명합니다. 설정 섹션에서 이들을 출력으로 정의합니다. 스케치 하단에 setColor()라는 사용자 정의 함수가 있으며, redValue, greenValue, blueValue 3개 인자를 받습니다. 이 인자들은 LED 밝기 또는 PWM 신호의 듀티 사이클을 나타내며 analogWrite() 함수로 생성됩니다. 값은 0~255 범위로, 255는 PWM 신호의 100% 듀티 사이클 즉 최대 LED 밝기입니다.
int redPin = 7;
int greenPin = 6;
int bluePin = 5;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop() {
setColor(255, 0, 0); // 빨간색
delay(1000);
setColor(0, 255, 0); // 녹색
delay(1000);
setColor(0, 0, 255); // 파란색
delay(1000);
setColor(255, 255, 255); // 흰색
delay(1000);
setColor(170, 0, 255); // 보라색
delay(1000);
}
void setColor(int redValue, int greenValue, int blueValue) {
analogWrite(redPin, redValue);
analogWrite(greenPin, greenValue);
analogWrite(bluePin, blueValue);
}
루프 함수에서 매초 LED 색상을 변경하는 프로그램을 만듭니다. 빨간색을 얻으려면 setColor()를 호출하여 redValue에 255, 나머지에 0을 설정합니다. 녹색과 파란색도 마찬가지입니다. 다른 색상을 얻으려면 인자 값을 혼합합니다. 예를 들어 3개 LED 모두 최대 밝기(255)로 설정하면 흰색이 되고, redValue 170, greenValue 0, blueValue 255로 설정하면 보라색이 됩니다.