實(shí)驗(yàn) RGB LED 三色混光與狀態(tài)燈封裝)
在智能硬件項(xiàng)目中,RGB LED 經(jīng)常承擔(dān)“狀態(tài)表達(dá)”的角色。單色 LED 只能表達(dá)亮和滅,而 RGB LED 可以通過(guò)紅、綠、藍(lán)三路光的混合,表達(dá)更多設(shè)備狀態(tài)。例如白色短亮可以表示設(shè)備啟動(dòng),藍(lán)色呼吸可以表示待機(jī),綠色閃爍可以表示任務(wù)完成,紅色長(zhǎng)閃可以表示錯(cuò)誤,橙色閃爍可以表示普通警告。本實(shí)驗(yàn)基于 CanMV K210 使用 PWM 控制 RGB 三色 LED。程序?qū)⑽锢硪_ 6、7、8 分別作為紅色、綠色、藍(lán)色通道,通過(guò)三個(gè) PWM 對(duì)象輸出不同占空比,讓 RGB LED 顯示指定顏色。代碼支持 RGB 元組設(shè)置、十六進(jìn)制顏色設(shè)置、全局亮度縮放、平滑漸變、呼吸燈、警告閃爍、成功提示、錯(cuò)誤提示和設(shè)備狀態(tài)演示。這個(gè)實(shí)驗(yàn)不只是讓燈變顏色,而是把顏色當(dāng)成智能硬件的人機(jī)反饋語(yǔ)言。學(xué)習(xí)目標(biāo)說(shuō)明理解 PWM 控制認(rèn)識(shí) PWM 占空比如何影響 LED 亮度掌握 RGB 混色通過(guò)紅、綠、藍(lán)三路亮度組合顯示不同顏色學(xué)會(huì)亮度縮放使用全局亮度參數(shù)控制整體亮度,避免燈光過(guò)亮理解燈效封裝將漸變、呼吸、閃爍和狀態(tài)提示封裝成可復(fù)用函數(shù)建立狀態(tài)燈思維使用不同顏色和閃爍節(jié)奏表達(dá)設(shè)備運(yùn)行狀態(tài)文章目錄理論基礎(chǔ)硬件設(shè)施軟件代碼擴(kuò)展應(yīng)用總結(jié)理論基礎(chǔ)RGB LED 可以理解成把紅色 LED、綠色 LED 和藍(lán)色 LED 封裝在一起的發(fā)光器件。程序分別控制 R、G、B 三個(gè)通道的亮度,就可以混合出不同顏色。紅色通道亮度高時(shí)顯示偏紅,綠色通道亮度高時(shí)顯示偏綠,藍(lán)色通道亮度高時(shí)顯示偏藍(lán);紅色和綠色同時(shí)亮起可以形成黃色,綠色和藍(lán)色同時(shí)亮起可以形成青色,紅色和藍(lán)色同時(shí)亮起可以形成紫色,三路同時(shí)亮起可以形成白色。普通 GPIO 輸出只有高電平和低電平,適合控制 LED 亮滅,但不適合控制亮度變化。PWM 的作用就是通過(guò)快速開(kāi)關(guān)輸出形成不同占空比,讓 LED 看起來(lái)具有不同亮度。占空比越高,對(duì)應(yīng)通道越亮;占空比越低,對(duì)應(yīng)通道越暗。本實(shí)驗(yàn)中的rgb_to_duty()函數(shù),就是把 0~255 的顏色值轉(zhuǎn)換成 0~100 的 PWM 占空比。RGB LED 常見(jiàn)結(jié)構(gòu)包括共陰極和共陽(yáng)極。共陰極 RGB LED 通常是數(shù)值越大越亮,三路顏色通道輸出較高占空比時(shí),對(duì)應(yīng)顏色增強(qiáng)。共陽(yáng)極 RGB LED 的亮滅邏輯相反,數(shù)值越大不一定越亮。代碼中通過(guò)COMMON_ANODE參數(shù)適配這兩類模塊,默認(rèn)按共陰極方式處理。如果實(shí)際現(xiàn)象出現(xiàn)顏色反向、熄滅異?;蛄翜邕壿嫴环项A(yù)期,可以修改這個(gè)參數(shù)。下面的流程圖從電路控制角度展示整個(gè)實(shí)驗(yàn)鏈路。程序并不是直接“設(shè)置顏色”,而是先把顏色值拆成 R、G、B 三路亮度,再轉(zhuǎn)換成 PWM 占空比,最后由三個(gè)引腳分別控制 RGB LED 的三個(gè)顏色通道。