ESP32, IOT物聯網

【IOT物聯網應用-ESP32】第八篇:PWM呼吸燈 調控燈光亮度

實驗說明:

  • 我們知道一個按鈕有兩種狀態:按下和釋放,LED會有開/關狀態,那麼我們要如何進入中間狀態呢? 如何輸出一個中間狀態讓LED“半亮” 呢? 這就是我們要學習的。米羅在本文將會介紹讓如何使用PWM訊號控制LED的亮度。
  • 首先,PWM訊號最容易入門學習的就是呼吸燈,呼吸燈也就是LED逐漸由滅變亮,逐漸由亮變滅,就像“呼吸”一樣的滑順。 那麼,如何控制LED的亮度呢? 本章節將完成一個PWM訊號調控呼吸燈。

 

材料:

  • ESP32-E DevKit
  • USB 傳輸線
  • 直插LED
  • 220Ω直插電阻
  • 麵包板
  • 麵包板跳線

▼ 購買IoT物聯網學習教材:

ESP32 物聯網應用學習套件 ESP32CAM IoT物聯網學習教材 適用Arduino

 

相關知識:

  • PWMPulse-Width Modulation,是一種利用數位訊號控制類比電路的非常有效的方法。普通微處理器是不能直接輸出類比訊號,然而PWM技術使得實現這種轉換非常方便(數位到類比訊號的轉換)。
  • PWM技術利用數位腳位發送一定頻率的方波,即輸出高電位和低電位,交替持續一段時間。每組高電位和低電位的總時間一般是固定的,稱為週期(注:週期是頻率的倒數)。輸出高電位的時間一般稱為脈衝寬度,佔空比是脈衝持續時間或脈衝寬度(PW)佔波形總週期(T)的百分比。
  • 所以高電位輸出持續時間越長,佔空比越長,類比訊號中對應的電壓就會越高。下圖顯示了類比訊號電壓如何在 0V-3.3V(高電平為 3.3V)之間變化,對應脈衝寬度 0%-100%

PWM 佔空比越長,輸出功率就越高。現在我們了解了這種關係,我們可以使用 PWM 來控制 LED 的亮度或直流馬達的速度等。

 

安裝 ESP32 AnalogWrite 程式庫

  • 在 Arduino 整合環境功能表點選 草稿碼 / 匯入程式庫 / 管理程式庫。
  • 在右上方搜尋框輸入「ESP32 AnalogWrite」,下方會列出所有符合條件的程式庫,不同程式庫使用的程式碼並不相同。此處點   選「ESP32 AnalogWrite」,該項目右下角會出現「安裝」鈕,按「安裝」鈕開始安裝。

▼注意:假如使用下列程式碼發生編譯錯誤,則表示您目前安裝的ESP32函式庫較為新版,請務必將「#include <analogWrite.h>」這一行移除並重新編譯,則可編譯成功並正常運行。

程式:

#include <analogWrite.h>  
int ledpin=15; //ESP32 GPIO15

void setup() {
  pinMode(ledpin,OUTPUT);
}

void loop() {
  for (int i = 0; i < 255; i++) { //LED 從滅到亮
    analogWrite(ledpin,i); 
    delay(10); 
  } 
  for (int i = 255; i > -1; i--) { //LED 從亮到滅
    analogWrite(ledpin,i);
    delay(10);
  }
}

 

將程式碼下載到 ESP32,您會看到 LED 從滅到亮,再從亮到滅逐漸像呼吸一樣。

 

 

 

 

 

相關文章