前言:什麼是 RGB LED?
在 Arduino 創客專案中,RGB LED(三原色發光二極體) 是製作氛圍燈、情境燈或設備狀態指示燈最常用的元件之一。
與一般只能發出單一顏色(如紅光或綠光)的 LED 不同,RGB LED 將 紅(Red)、綠(Green)、藍(Blue)三種顏色的發光晶片整合在同一個封裝內。透過控制這三種原色光的亮度比例,就能組合出超過 1,600 萬種色彩!
一、 RGB LED 工作原理與腳位定義
RGB LED 通常帶有 4 支引腳,其中包含 3 支色彩控制腳與 1 支公共端引腳:
R 腳(Red): 控制紅光亮度。
G 腳(Green): 控制綠光亮度。
B 腳(Blue): 控制藍光亮度。
公共端(Common Pin): 4 支腳中最長的引腳。
共陰極(Common Cathode)與 共陽極(Common Anode)差異
購買或實作 RGB LED 時,必須先辨識其公共端類型:
共陰極 RGB LED(Common Cathode):
公共端(最長腳): 接 GND(接地)。
控制方式: 當控制腳給 高電位(HIGH / PWM 輸出 255) 時,對應的顏色的晶片會點亮。
共陽極 RGB LED(Common Anode):
公共端(最長腳): 接 5V(電源正極)。
控制方式: 當控制腳給 低電位(LOW / PWM 輸出 0) 時,對應顏色的晶片才會點亮(邏輯反向)。
💡 本範例以教學最常見的 共陰極 RGB LED 進行接線與程式實作示範。
二、 什麼是 PWM 脈衝寬度調製?如何混色?
Arduino 的數位腳位通常只能輸出 HIGH(5V) 或 LOW(0V),若要讓 RGB LED 顯示紅、綠、藍以外的中間色(例如粉紅色、黃色、青色),就必須透過 PWM(Pulse Width Modulation) 技術調控電壓強度。
Arduino Uno 板上標有 波浪符號
~的腳位(如 Pin 3, 5, 6, 9, 10, 11)支援 PWM 輸出。使用
analogWrite(pin, value)函式,傳入 0 到 255 的數值,即可調控發光亮度:0:完全熄滅(0V)255:最高亮度(5V)128:中等亮度(約 2.5V)
三、 實驗材料與電路接線圖
⚠️ 重要提示: RGB LED 內部為三個獨立的 LED 晶片,切勿直接將控制腳接上 Arduino 數位腳位,否則會過載燒毀。必須在 R、G、B 三個控制腳上分別串聯 220Ω 限流電阻。
🛠️ 所需材料清單
Arduino Uno R3 開發板 × 1
4 腳共陰極 RGB LED × 1
220Ω 直插電阻 × 3(紅、綠、藍控制腳各一顆)
實驗麵包板 × 1
麵包板跳線(杜邦線) × 若干
USB 數據傳輸線 × 1
🛍️ 還沒有硬體材料嗎? 推薦購買:米羅科技 – Arduino 程式學習爆款套件組(一次購足所有基礎感測器與模組)
🔌 引腳接線對照表 (Pin Mapping)
四、 Arduino RGB LED 隨機全彩混色程式範例
本範例程式透過 random(0, 256) 隨機生成紅、綠、藍三色的 PWM 數值,讓 RGB LED 每隔 1 秒變換一次絢麗色彩。
💻 完整程式碼
/*
* 【Arduino入門教學】第17篇:RGB LED 全彩燈光控制
* 發佈單位:米羅科技文創學院
* 說明:使用 Arduino PWM 腳位 (9, 10, 11) 控制共陰極 RGB LED 隨機變幻色彩
*/
// 定義 RGB LED 連接的 PWM 腳位
#define LEDR 11 // 紅光控制腳 (PWM)
#define LEDG 10 // 綠光控制腳 (PWM)
#define LEDB 9 // 藍光控制腳 (PWM)
void setup() {
// 設定 PWM 腳位為輸出模式
pinMode(LEDR, OUTPUT);
pinMode(LEDG, OUTPUT);
pinMode(LEDB, OUTPUT);
}
// 建立變數儲存三原色亮度值 (0~255)
int r = 0;
int g = 0;
int b = 0;
void loop() {
// 取得 0~255 之間的隨機 PWM 數值
r = random(0, 256);
g = random(0, 256);
b = random(0, 256);
// 透過 analogWrite 輸出 PWM 訊號至 RGB LED
analogWrite(LEDR, r);
analogWrite(LEDG, g);
analogWrite(LEDB, b);
// 停頓 1000 毫秒(1秒)後變換下一種色彩
delay(1000);
}
五、 程式邏輯與實作調效說明
random(min, max)函式:random(0, 256)會隨機產生包含0至255的整數。analogWrite(pin, value)應用: 此函式在指定的 PWM 腳位產生對應占空比(Duty Cycle)的方波,達成調光目的。共陽極 RGB LED 程式改寫: 若您使用的是共陽極 RGB LED,只需將輸出值改為反相
255 - 數值(即analogWrite(LEDR, 255 - r);),公共端改接 5V 即可!
六、 常見問題與除錯 (FAQ)
Q1: 為什麼 RGB LED 顯示的顏色與程式設定有偏差(例如紅光太亮、藍光偏暗)?
解答: 因為紅光、綠光、藍光二極體的導通電壓(Forward Voltage, )不同。一般紅光 較低(約 2.0V),綠光與藍光較高(約 3.0V~3.2V)。若全使用 220Ω 電阻,紅光會相對較亮。欲精確對色,可嘗試為紅光腳位接稍微大一點的電阻(如 330Ω)。
Q2: 上傳程式後 RGB LED 完全不亮或某個顏色不工作?
解答:
請檢查最長腳位(公共端)接的是 GND(共陰極)還是 5V(共陽極)。
確認腳位是否連接在帶有波浪符號
~的 PWM 腳位上。
🔗 延伸閱讀與推薦課程



