RGB 三色 LED

RGB 三色 LED 是整合了紅、綠、藍三顆 LED 於同一元件上的 LED。如同一般 LED 搭配適當電阻後,將陽極 (+) 連接至電壓輸入 (例如 3.3V) 並將陰極 (-) 接地即可點亮。本範例使用的是共陽極三色 LED,電路圖如下所示,pin 1 為三個 LED 共用的陽極:

因此將 pin 1 接到 3.3V 的電壓輸入、並把 pin 2、3、4 任一接腳連接適當電阻後接地,即可看到藍色、綠色、或紅色的 LED 燈亮起。

甚至可將 pin 2、3、4 各別連接至 PWM 腳位,就能分別控制各 LED 的亮度,達成更多不同的顏色光線組合。下圖為多色顯示範例:

  • 將共陽極腳位 (LED 四隻腳中最長的腳) 連接至開發板 3V3 腳位。

  • 將紅、綠、藍三隻腳分別接到 P17、P16、和 P15,並在之間各放置 1KΩ 電阻。

透過 Arduino IDE 載入下列 sketch 程式碼:

#define R_PIN A3		// P17
#define G_PIN A2		// P16
#define B_PIN A1		// P15
#define MAX_STEP (10)

#define IS_OVER(x) (((x) >> 8) != 0)
#define CLAMP(x)   (((x) < 0)? 0: 255)

int r, g, b;
int r_dir = 1, g_dir = 1, b_dir = 1;

void setup()
{
    // initialize the pin directions
    pinMode(R_PIN, OUTPUT);
    pinMode(G_PIN, OUTPUT);
    pinMode(B_PIN, OUTPUT);
}
void loop()
{
    // walk in a random step
    r += random(MAX_STEP) * r_dir;
    g += random(MAX_STEP) * g_dir;
    b += random(MAX_STEP) * b_dir;

    // check if it walks out of the boundary and thus needs to turn back
    if (IS_OVER(r)) { r = CLAMP(r); r_dir = -r_dir; }
    if (IS_OVER(g)) { g = CLAMP(g); g_dir = -g_dir; }
    if (IS_OVER(b)) { b = CLAMP(b); b_dir = -b_dir; }

    // Set the output value
    analogWrite(R_PIN, r);
    analogWrite(G_PIN, g);
    analogWrite(B_PIN, b);

    delay(50);
}

按下工具列的 Upload 按鈕將程式上傳至開發板後,即會看見 LED 不斷變化顏色。

注意事項

LED 點亮條件:陽極電壓需比陰極電壓高。

此例中的 LED 陽極連接至 3.3V,因此若 PWM 腳位亦輸出其最大電壓 (3.3V) 至 LED 陰極,那麼由於陰極與陽極之間沒有電壓差,故 LED 不會亮起。反之,要讓 LED 亮起,則 PWM 腳位需輸出其最低電壓 (0V),如此才能使 LED 的陰陽極獲得最大電壓差、達到最高亮度。

Last updated