Basic Tutorial for Arduino, 感測器 Sensor, 進階篇

【Arduino進階教學】RGB LED 模組 PWM 調色實作:全彩燈光控制原理與接線圖

一、 RGB LED 模組運作原理

RGB LED 模組 將紅(Red)、綠(Green)、藍(Blue)三個發光晶片封裝在同一個 LED 模組內。透過調整三原色的亮度比例,可以混合產生數百萬種不同的色彩。

模組核心運作機制

  1. 三原色混色原理(Additive Color Mixing):

    • 紅光 + 綠光 = 黃光

    • 紅光 + 藍光 = 紫光 / 品紅

    • 綠光 + 藍光 = 青光

    • 紅光 + 綠光 + 藍光(三色全亮)= 白光

  2. PWM 脈衝寬度調變控制: 透過 Arduino 的 PWM 引腳(輸出 0 ~ 255 的 analogWrite 數值),控制三個發光二極體各自的電流大小與亮度,進而調配出任意顏色。

  3. 共陰極 (Common Cathode) vs 共陽極 (Common Anode):

    • 共陰極(常見): 負極(GND)共用,三個顏色正極各自接 PWM 腳位;傳送 255 為最亮,0 為熄滅

    • 共陽極: 正極(VCC/5V)共用;傳送 0 為最亮,255 為熄滅

二、 實驗所需材料與電路配線圖 (Hardware Setup)

請依照配線圖將 RGB LED 模組上的 4 根引腳(-、R、G、B)連接至 Arduino Uno 對應的 GND 與 PWM 腳位。

🛒 準備材料

  • Arduino Uno 開發板 x 1

  • USB 傳輸線 x 1

  • RGB LED 模組(共陰極) x 1

  • 杜邦線 4 根

🛍️ 準備好你的硬體工具了嗎? 推薦選購:米羅科技 – Arduino 程式學習爆款套件組(包含豐富驅動專案模組)

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

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

⚡ 腳位對接說明 (Pin Mapping)

RGB LED 模組腳位標示腳位功能說明Arduino Uno 引腳 (PWM)
電源接地 (共用負極 GND)GND
R紅色發光晶片控制腳位D6 (~PWM)
G綠色發光晶片控制腳位D5 (~PWM)
B藍色發光晶片控制腳位D3 (~PWM)

三、 完整程式碼實作:三原色 PWM 自動調色

此程式無需下載額外的第三方函式庫,透過自訂 color() 函式直接傳送 0~255 PWM 數值控制顏色輸出。

int RPin = 6;   // R 接D6
int GPin = 5;   // G 接D5
int BPin = 3;   // B 接D3 
void setup()    
{   
        pinMode(RPin, OUTPUT);   
        pinMode(GPin, OUTPUT); 
        pinMode(BPin, OUTPUT); 
}    
      
void loop()  
{    
     
        // Basic colors:  
        color(255, 0, 0); // 红色亮
        delay(1000); //延時一秒 
        color(0,255, 0); //綠色亮
        delay(1000); //延時一秒
        color(0, 0, 255); //藍色亮  
        delay(1000); //延時一秒
  
        // Example blended colors:  
        color(255,255,0); // 黄色亮
        delay(1000); //延時一秒      
        color(128,0,255); // 紫色亮  
        delay(1000); //延時一秒
        color(255,255,255); // 白色亮  
        delay(1000); //延時一秒
        color(0,0,0); // 關閉led  
        delay(1000); //延時一秒  
        
}  

//顏色控制函數
void color (unsigned char red, unsigned char green, unsigned char blue)
{    
        analogWrite(RPin, red);   
        analogWrite(GPin,green); 
        analogWrite(BPin, blue); 
} 

四、 常見問題與除錯 (FAQ)

Q1:調出來的顏色與預期相反(例如設定 255 反而熄滅,0 反而最亮)?

  • 解答: 代表您使用的是 共陽極 (Common Anode) RGB 模組。請將 - 腳改接至 5V,並在 color()函式中將 PWM 數值翻轉(如改成 analogWrite(RPin, 255 - red);)。

Q2:為什麼顏色無法進行微調亮暗,只能全亮或全滅?

  • 解答: analogWrite() PWM 調光必須使用支援 PWM 的引腳。Arduino Uno 支援 PWM 的腳位帶有 ~ 符號(即 Pin 3, 5, 6, 9, 10, 11),請確認腳位是否對應程式設定的 Pin 6, 5, 3。

Q3:混色看起來很不均勻或白色偏紅?

  • 解答: 紅、綠、藍三色二極體所需的導通電壓與發光效率不同(紅光通常電壓較低)。若使用獨立 LED 顆粒實作,可在紅光腳位串接較大阻值的限流電阻以平衡亮度。

🔗 延伸閱讀與推薦課程

📟 進階顯示模組控制:【Arduino進階教學】LCD 1602 I2C 顯示模組:4線快速接線、位址檢測與程式碼範例

👈 上一篇: 【Arduino進階教學】雙軸搖桿模組(Joystick):X/Y軸類比讀取與 Z 軸按鈕實作

👉 下一篇: 【Arduino進階教學課程】 Relay繼電器模組快速上手

📘 總索引: Arduino 新手學習必讀經典 – 快速索引頁面