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