RGB三色燈簡介
RGB色彩模式包含紅綠藍三種,通過控制紅(R)、綠(B)、藍(G)三種顏色的變化使其相互疊加產生花式顏色。而其顏色值的輸出是通過PWM來控制的。RGB三基色按照不同的比例相加合成混色稱為相加混色,除相加混色法之外還有相減混色法。
PWM控制
PWM,即脈沖寬度調制,是英文“Pulse Width ModulaTIon”的縮寫。根據相應載荷的變化來調制晶體管基極或MOS管柵極的偏置,來實現晶體管或MOS管導通時間的改變,從而實現開關穩壓電源輸出的改變。這種方式能使電源的輸出電壓在工作條件變化時保持恒定,是利用微處理器的數字信號對模擬電路進行控制的一種非常有效的技術。
PWM功能簡介
PWM主要通過analogWrite () 進行控制,針對Arudino UNO板子中帶有"~"的3、5、6、9、10、11數字端口寫入一個模擬值,通知高電平與低電平持續時間的比值控制LED的亮度變化或者電機的轉速。
例如:欲使得內置的Arudino UNO 中的led亮度變為原來的一般,編寫analogWrite (13,127)就可以了。一個電路讓一個端口循環輸出2.5V、3V、5V電壓,僅僅用硬件電路就困難了,這時候就是PWM大顯身手的時候了。
占空比:高電平與低電平持續時間之比。
硬件電路連接
Arduino引腳 | RGB LED(共陰極) |
---|---|
D11 | R |
D10 | B |
D9 | G |
GND | GND |
所需器件
名稱 | 數量 |
---|---|
電阻 | 3 |
RGB LED燈 | 1 |
Arduino UNO開發板 | 1 |
控制代碼
控制RGB代碼如下
/*運行環境:Arduino 1.8.19*/ #define GREEN 9 #define BLUE 10 #define RED 11 int redValue; int greenValue; int blueValue; void setup(){ pinMode(GREEN, OUTPUT); pinMode(BLUE, OUTPUT); digitalWrite(RED, HIGH); digitalWrite(GREEN, LOW); digitalWrite(BLUE, LOW); } void loop(){ #define delayTime 1 redValue = 255; greenValue = 0; blueValue = 0; for(int i = 0; i < 255; i += 1){ redValue -= 1; greenValue += 1; analogWrite(RED, redValue); analogWrite(GREEN, greenValue); delay(delayTime); } redValue = 0; greenValue = 255; blueValue = 0; for(int i = 0; i < 255; i += 1){ greenValue -= 1; blueValue += 1; analogWrite(GREEN, greenValue); analogWrite(BLUE, blueValue); delay(delayTime); } redValue = 0; greenValue = 0; blueValue = 255; for(int i = 0; i < 255; i += 1){ blueValue -= 1; redValue += 1; analogWrite(BLUE, blueValue); analogWrite(RED, redValue); delay(delayTime); } }