使用脈沖寬度調制(PWM)技術,使用汞柱板來控制LED亮度
控制LED亮度是電子和嵌入式系統(tǒng)中的一個基本概念,在可調光照明,顯示背光,甚至電機速度控制中起著關鍵作用。我們使用脈寬調制(PWM)來實現(xiàn)平滑和精確的亮度調節(jié),而不僅僅是開關LED。
PWM的工作原理是快速切換LED在ON和OFF狀態(tài)之間的高頻。亮度是通過改變占空比來控制的,占空比代表了信號在每個周期中保持高電平的時間百分比。
當以足夠高的頻率切換時,人眼無法感知在開和關狀態(tài)之間的快速切換。相反,由于視覺的持續(xù),LED的亮度呈現(xiàn)為連續(xù)的平均值,造成變暗的錯覺。
在本教程結束時,您將學習:
?PWM是什么以及它如何控制亮度。
?如何使用水星板上的analogWrite()函數(shù)。
我們開始吧
?設置環(huán)境-如果您還沒有在Arduino®上添加水星板,現(xiàn)在是這樣做的好時機。
?插入USB電纜水星板和連接它您的筆記本電腦。
?請參閱下面的代碼
?當Arduino終端顯示“Connecting…”時,長按FLASH按鈕啟動上傳過程。
這里到底發(fā)生了什么?
速成班:了解Arduino®環(huán)境中的GPIO控制
對于Arduino®編碼環(huán)境的新手,讓我們分解使用數(shù)字GPIO(通用輸入/輸出)引腳和analogWrite()函數(shù)控制LED亮度的基礎知識。
Arduino中的analogWrite()函數(shù)用于在支持的數(shù)字引腳上生成脈沖寬度調制(PWM)信號。與digitalWrite()不同,digitalWrite()只是將引腳設置為HIGH或LOW,而analogWrite()通過改變方波的占空比來允許中間輸出電平。
這里,“亮度”表示用戶輸入所需的LED亮度。
在水銀開發(fā)板上,高電平是3.3V,低電平是0V。analogWrite()函數(shù)使輸出能夠在兩個極端之間實現(xiàn)可感知的電壓。
analogWrite()函數(shù)接受兩個輸入:引腳和占空比。在Mercury Board上,內置LED連接到引腳D7 (GPIO 2)。通過將占空比設置為0到255之間的值[0 = 0%占空比,255 = 100%占空比],我們可以平滑地調節(jié)LED的亮度。
因此,要將LED亮度設置為50%,代碼如下:
為了使其更具交互性,我們可以引入Serial.parseInt();允許用戶輸入控制LED亮度。這將使用戶能夠輸入[0,255]之間的亮度水平,水星板將讀取并使用相應地調整LED的亮度。
***聲明***
以上提到的一切大體上都是正確的;然而,在使用ESP-12F模塊的水星板上,ESP-12F模塊上的默認內置LED以反向配置連接。這意味著當GPIO 2 (D7)設置為HIGH時,LED關閉,當GPIO 2設置為LOW時,LED打開。
因此,PWM的行為也被反轉。當PWM值設置為0時,LED以全亮度發(fā)光,當PWM值設置為255時,LED完全關閉。否則,概念理解保持不變。
為了解釋這種倒置的LED行為,我們需要在代碼中做一個小的調整,如下所示:
這里,“亮度”表示用戶輸入所需的LED亮度。
本文編譯自hackster.io