RGB三色燈簡(jiǎn)介
RGB色彩模式包含紅綠藍(lán)三種,通過(guò)控制紅(R)、綠(B)、藍(lán)(G)三種顏色的變化使其相互疊加產(chǎn)生花式顏色。而其顏色值的輸出是通過(guò)PWM來(lái)控制的。RGB三基色按照不同的比例相加合成混色稱(chēng)為相加混色,除相加混色法之外還有相減混色法。
PWM控制
PWM,即脈沖寬度調(diào)制,是英文“Pulse Width ModulaTIon”的縮寫(xiě)。根據(jù)相應(yīng)載荷的變化來(lái)調(diào)制晶體管基極或MOS管柵極的偏置,來(lái)實(shí)現(xiàn)晶體管或MOS管導(dǎo)通時(shí)間的改變,從而實(shí)現(xiàn)開(kāi)關(guān)穩(wěn)壓電源輸出的改變。這種方式能使電源的輸出電壓在工作條件變化時(shí)保持恒定,是利用微處理器的數(shù)字信號(hào)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)。
PWM功能簡(jiǎn)介
PWM主要通過(guò)analogWrite () 進(jìn)行控制,針對(duì)Arudino UNO板子中帶有"~"的3、5、6、9、10、11數(shù)字端口寫(xiě)入一個(gè)模擬值,通知高電平與低電平持續(xù)時(shí)間的比值控制LED的亮度變化或者電機(jī)的轉(zhuǎn)速。
例如:欲使得內(nèi)置的Arudino UNO 中的led亮度變?yōu)樵瓉?lái)的一般,編寫(xiě)analogWrite (13,127)就可以了。一個(gè)電路讓一個(gè)端口循環(huán)輸出2.5V、3V、5V電壓,僅僅用硬件電路就困難了,這時(shí)候就是PWM大顯身手的時(shí)候了。
占空比:高電平與低電平持續(xù)時(shí)間之比。
硬件電路連接
Arduino引腳 | RGB LED(共陰極) |
---|---|
D11 | R |
D10 | B |
D9 | G |
GND | GND |
所需器件
名稱(chēng) | 數(shù)量 |
---|---|
電阻 | 3 |
RGB LED燈 | 1 |
Arduino UNO開(kāi)發(fā)板 | 1 |
控制代碼
控制RGB代碼如下
/*運(yùn)行環(huán)境: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); } }