Basic Tutorial for Arduino, 入門篇

【Arduino入門教學】第17篇:RGB LED 全彩燈光控制(PWM 混色原理、共陰/共陽引腳圖解與程式範例)

assorted-colored LED lights

前言:什麼是 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 時,必須先辨識其公共端類型:

  1. 共陰極 RGB LED(Common Cathode):

    • 公共端(最長腳):GND(接地)

    • 控制方式: 當控制腳給 高電位(HIGH / PWM 輸出 255) 時,對應的顏色的晶片會點亮。

  2. 共陽極 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 程式學習爆款套件組(一次購足所有基礎感測器與模組)

👍爆款推薦:程式學習套件組

購買網址:shop.mirotek.com.tw

 

🔌 引腳接線對照表 (Pin Mapping)

RGB LED 引腳連接元件與電阻Arduino Uno 腳位說明
Common(最長腳)直接連接GND共陰極公共接地端
R(紅光腳)串聯 220Ω 電阻Pin 11 ~ (PWM)控制紅光強度 (0~255)
G(綠光腳)串聯 220Ω 電阻Pin 10 ~ (PWM)控制綠光強度 (0~255)
B(藍光腳)串聯 220Ω 電阻Pin 9 ~ (PWM)控制藍光強度 (0~255)

 

四、 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);
}

五、 程式邏輯與實作調效說明

  1. random(min, max) 函式: random(0, 256) 會隨機產生包含 0255 的整數。

  2. analogWrite(pin, value) 應用: 此函式在指定的 PWM 腳位產生對應占空比(Duty Cycle)的方波,達成調光目的。

  3. 共陽極 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 完全不亮或某個顏色不工作?

解答:

  1. 請檢查最長腳位(公共端)接的是 GND(共陰極)還是 5V(共陽極)。

  2. 確認腳位是否連接在帶有波浪符號 ~ 的 PWM 腳位上。

🔗 延伸閱讀與推薦課程

 

 

 

 

相關文章