rgb-2-2

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三個腳位,接線圖如下:

rgb-1

程式非常簡單,只要我們分別給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);
  } 
}