《Arduino入門》第七篇:RGB LED燈全彩模組
LED的操作算是Arduino最入門的練習,但之前大家用的可能都是單色的LED,像是紅、綠、藍、白等,其實還有一種LED燈,它是可以表現各種色彩的,我們稱為RGB LED。大家可以找到單顆4腳的RGB LED,也可以選擇更加方便的RGB模組,這次的範例我們以RGB模組進行示範。
一般常見的5mm RGB LED模組都是共陰的,也就是說板子上只有一個GND腳位,沒有VCC腳位;如果是共陽的,則是換成VCC腳位。這次範例我們用的是有GND腳位的版本。
模組共有4支腳,另外3支腳分別是R、G、B,就是對應紅、綠、藍,三個原色,每個原色可以有0-255的變化,所以組合起來就有1677萬色,也就是全彩。
因為我們必須傳遞0-255的數值給這三個腳位,所以必須接在有PWM的腳位上,也就是Uno板上有畫「~」的腳位。這次我們用的是9、10、11三個腳位,接線圖如下:
程式非常簡單,只要我們分別給R、G、B三個腳位不同的PWM值,就可以讓LED表現出我們所要的顏色了。
第一個例子很簡單,我們分別讓LED輪流表現正紅、正綠、正藍,三個顏色,時間間隔1秒鐘。
const int Red = 9;
const int Green = 10;
const int Blue = 11;
void setup() {
pinMode(Red, OUTPUT);
pinMode(Green, OUTPUT);
pinMode(Blue, OUTPUT);
}
void loop() {
analogWrite(Red,255);
analogWrite(Green,0);
analogWrite(Blue,0);
delay(1000);
analogWrite(Red,0);
analogWrite(Green,255);
analogWrite(Blue,0);
delay(1000);
analogWrite(Red,0);
analogWrite(Green,0);
analogWrite(Blue,255);
delay(1000);
}
第二個例子加上了迴圈,各色漸進的變化,產生像是呼吸的效果,還蠻有趣的,大家可以試試看!
const int Red = 9;
const int Green = 10;
const int Blue = 11;
#define FADESPEED 5 // 速度
void setup() {
pinMode(Red, OUTPUT);
pinMode(Green, OUTPUT);
pinMode(Blue, OUTPUT);
}
void loop() {
int r, g, b;
// 由藍到紫
for (r = 0; r < 256; r++) {
analogWrite(Red, r);
delay(FADESPEED);
}
// 由紫到紅
for (b = 255; b > 0; b--) {
analogWrite(Blue, b);
delay(FADESPEED);
}
// 由紅到黃
for (g = 0; g < 256; g++) {
analogWrite(Green, g);
delay(FADESPEED);
}
// 由黃到綠
for (r = 255; r > 0; r--) {
analogWrite(Red, r);
delay(FADESPEED);
}
// 由綠到藍綠色
for (b = 0; b < 256; b++) {
analogWrite(Blue, b);
delay(FADESPEED);
}
// 由藍綠色到藍色
for (g = 255; g > 0; g--) {
analogWrite(Green, g);
delay(FADESPEED);
}
}