如何創(chuàng)建一個動態(tài)的LED燈光秀
在LED亮度控制的基礎(chǔ)上,我們將使用PWM,平滑過渡和淡出來創(chuàng)建一個動態(tài)燈光秀,使其在視覺上引人入勝!
在我們之前的LED亮度控制項目的基礎(chǔ)上,我們現(xiàn)在將進(jìn)一步創(chuàng)建一個動態(tài)的LED燈光秀。使用PWM和亮度的定時變化,我們將創(chuàng)建平滑的過渡,淡出和效果,使LED在視覺上引人入勝。讓我們讓LED煥發(fā)生機(jī)吧!
我們開始吧
?如果你還沒有完成LED亮度教程,我們強(qiáng)烈建議你在繼續(xù)之前先復(fù)習(xí)一下,建立一個堅實的基礎(chǔ)。
?設(shè)置環(huán)境-如果您還沒有在Arduino®上添加水星板,現(xiàn)在是這樣做的好時機(jī)。
?插入USB電纜水星板和連接它您的筆記本電腦。
?請參閱下面的代碼
?當(dāng)Arduino終端顯示“Connecting…”時,長按FLASH按鈕啟動上傳過程。
這里到底發(fā)生了什么?
速成班:Arduino®環(huán)境中的For-loop和delay()
for循環(huán)是Arduino中用于多次執(zhí)行代碼塊的基本控制結(jié)構(gòu)。
delay(ms)函數(shù)將程序暫停一段指定時間(以毫秒為單位)。
回到項目上來…
我們將實現(xiàn)的LED例程遵循以下順序:LED OFF→LED ON→LED OFF→LED ON→Slow Fade Out。這種圖案將創(chuàng)造一個動態(tài)的效果,逐漸過渡到一個平滑的衰減為一個視覺上吸引人的LED秀。
緩慢淡出
循環(huán)開始時亮度設(shè)置為250,在之前的狀態(tài)下,LED是開的。只要亮度大于等于0,循環(huán)就會繼續(xù)。在每次迭代中,亮度降低1(從250→249→248…添加2毫秒的延遲以創(chuàng)建平滑的衰落效果,而不是瞬間變化。
***聲明***
以上提到的一切大體上都是正確的;然而,在使用ESP-12F模塊的水星板上,ESP-12F模塊上的默認(rèn)內(nèi)置LED以反向配置連接。這意味著當(dāng)GPIO 2 (D7)設(shè)置為HIGH時,LED關(guān)閉,當(dāng)GPIO 2設(shè)置為LOW時,LED打開。
因此,PWM的行為也被反轉(zhuǎn)。當(dāng)PWM值設(shè)置為0時,LED以全亮度發(fā)光,當(dāng)PWM值設(shè)置為255時,LED完全關(guān)閉。否則,概念理解保持不變。
為了解釋這種倒置的LED行為,我們需要在代碼中做一個小的調(diào)整,如下所示:
這里,“亮度”表示用戶輸入所需的LED亮度。
本文編譯自hackster.io