文章目錄標題
帶有Arduino IDE的ESP8266 NodeMCU PWM –暗淡的LED(模擬輸出)
本課程介紹如何使用Arduino IDE通過ESP8266 NodeMCU生成PWM信號。舉例來說,我們將通過隨時間改變工作週期來使LED亮度變暗變亮。
ESP8266上的PWM信號分辨率為10位元。要使用Arduino IDE在ESP8266引腳上生成PWM信號,請使用AnalogWrite(pin, value)。使用整數形式,值的範圍是0~1023。
您可能還想閱讀有關PWM的其他指南:
- 帶有Arduino IDE的ESP32 PWM –昏暗的LED
- 帶有MicroPython的ESP32 / ESP8266 PWM –昏暗的LED
在繼續本課程之前,您應該已在Arduino IDE中安裝了ESP8266插件。按照之前的教程在Arduino IDE中安裝ESP8266。
ESP8266 NodeMCU PWM(脈波寬度調變)
如果您非常快地在高和低之間切換LED的電壓,您的眼睛將無法跟上LED開關的速度。您將只看到亮度的一些漸變。
這基本上就是PWM的工作原理-通過產生一個在非常高的頻率下在HIGH和LOW之間變化的輸出。
工作週期是LED設置為高電平的時間的一部分。下圖說明了PWM的工作原理。
50%的工作週期導致50%的LED亮度,0的週期意味著LED完全熄滅,而100的佔空比意味著LED完全點亮。更改工作週期是產生不同級別亮度的方式。
AnalogWrite()
analogWrite(pin, value);
- pin:PWM可以在引腳0到16上使用
- value:應介於0到1023的脈波寬度調變值。當值為0時,該引腳上的PWM被禁用。值1023對應於100%工作週期
您可以通過調用以下命令來更改PWM範圍:
analogWriteRange(new_range);
ESP8266的PWM頻率預設為1kHz。您可以通過以下方式更改PWM頻率:
analogWriteFreq(new_frequency);
ESP8266 NodeMCU調光LED,帶PWM
- ESP8266(閱讀最佳ESP8266開發板)
- 5mm LED
- 330歐姆電阻
- 麵包板
- 跳線
- 可選示波器(請閱讀適用於初學者的最佳示波器)
原理圖
ESP8266 NodeMCU PWM程式碼
/*********
Terry Lee
完整專案明細說明在 http://honeststore.com.tw
*********/
const int ledPin = 2;
void setup() {
}
void loop() {
// 增加LED亮度
for(int dutyCycle = 0; dutyCycle < 1023; dutyCycle++){ // 用PWM改變LED亮度 analogWrite(ledPin, dutyCycle); delay(1); } // 減少LED亮度 for(int dutyCycle = 1023; dutyCycle > 0; dutyCycle--){
// 用PWM改變LED亮度
analogWrite(ledPin, dutyCycle);
delay(1);
}
}
程式碼如何作業
首先定義連接LED的引腳。在這種情況下,LED連接到GPIO 2 (D4)。
const int ledPin = 2;
在裡面 loop(),您可以在0到1023之間改變工作週期,以增加LED亮度。
for(int dutyCycle = 0; dutyCycle < 1023; dutyCycle++){
// 用PWM改變LED亮度
analogWrite(ledPin, dutyCycle);
delay(1);
}
然後,在1023和0之間降低亮度。
for(int dutyCycle = 1023; dutyCycle > 0; dutyCycle--){
// 用PWM改變LED亮度
analogWrite(ledPin, dutyCycle);
delay(1);
}
要設置LED亮度,您需要使用 AnalogWrite() 該函數接受要在其中獲取PWM信號的GPIO以及在0到1023之間的值以設置工作週期的GPIO參數。
範例
總結
您可能還喜歡嘗試我們的其他項目:
- ESP8266 OLED顯示幕中的DHT溫濕度讀數
- ESP8266 DHT溫濕度Web服務器
- 使用ESP8266入侵PIR運動感測器
- 搭建一個ESP8266 Web服務器
如果您喜歡ESP8266,請確保您了解我們的資源:
- 使用ESP8266的家庭自動化(電子書+視頻課程)
- ESP8266的免費教程和項目
- 使用ESP32和ESP8266進行MicroPython編程
謝謝閱讀。