ESP32, IOT物聯網

【ESP32】第十二篇:使用可變電阻調控 LED 燈光明暗 ADC 類比輸入與 PWM 調光實作

一、 實驗說明:讓 ESP32 讀取連續變化的電訊號!

在先前的專題中,我們多半是透過微控制器處理按鍵或開關的「數位訊號」(只有 0 與 1 的高低電位變化)。但在現實生活與物聯網應用中,有許多數據是連續變化的「類比訊號」(例如:燈光明暗、音量大小、溫度高低或旋鈕角度)。

本實驗我們將使用創客專案中最常見的可變電阻(電位器 Potentiometer),帶大家搞懂如何利用 ESP32 的 ADC(類比數位轉換器) 讀取連續電壓變化,並搭配 <analogWrite.h> 程式庫 實現 LED 燈光的滑順調光控制!

電位器 Potentiometer 可變電阻

二、 實驗材料準備清單

本篇實作可變電阻調光專案所需的硬體元件如下:

  • ESP32 開發板

  • 麵包板 (Breadboard)

  • 可變電阻(電位器,建議使用 10kΩ)

  • LED 發光二極體

  • 220Ω 限流電阻

  • 杜邦跳線若干

  • USB 傳輸線

 

🛒 一次備齊創客工具!

歡迎直接購買米羅科技的 ESP32 物聯網應用學習套件,免去東奔西跑湊零件的煩惱。內含 DHT11感測器、各類感測器及基礎電子元件,是學校課堂教學與個人專案開發的最佳首選!

 

 

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

 

三、 實作實驗程式碼:讀取旋鈕與調控 LED 明暗

請將以下程式碼複製到 Arduino IDE 中並上傳至 ESP32 開發板:

1. 範例程式碼

#include <analogWrite.h> 
int potpin=36;                  // 可變電阻訊號線接在 ESP32 GPIO36 (VP / ADC1_CHANNEL_0)
int ledpin=15;                  // LED 燈接在 ESP32 GPIO15
int val=0;                      // 儲存可變電阻讀取值的變數
void setup()
{
  pinMode(ledpin,OUTPUT);       // 設定 GPIO15 為輸出模式
  Serial.begin(9600);           // 初始化 Serial 序列埠監控視窗,鮑率設定為 9600
}
void loop()
{
  val=analogRead(potpin);       // 讀取可變電阻的類比數值 (範圍 0 ~ 4095)
  Serial.println(val);          // 將讀取到的數值印在序列埠監控視窗
  analogWrite(ledpin,val/16);   // 將數值除以 16 換算為 0~255,輸出 PWM 控制 LED 亮度
  delay(10);                    // 延遲 10 毫秒維持系統讀取穩定度
}

 

2. 燒錄與操作測試

  1. 點擊 Arduino IDE 的 「上傳 (Upload)」 按鈕。

  2. 開啟 「序列埠監控視窗 (Serial Monitor)」(鮑率設為 9600)。

  3. 順時針或逆時針旋轉可變電阻,監控視窗將顯示 0~4095 的數值變化,同時 LED 燈會隨著旋轉滑順變亮或變暗!

 

四、 初學者常見卡關問題與排錯指南(Troubleshooting)

1. 旋轉旋鈕時,序列埠監控視窗數字會變,但 LED 燈完全不亮?

  • LED 極性接反: LED 長腳為正極,必須連接至 GPIO15(透過限流電阻);短腳為負極,必須接在 GND。

  • 杜邦線接觸不良: 請確認麵包板上的杜邦線是否有確實插緊在 GPIO15 腳位上。

2. 旋轉可變電阻時,數值跳動劇烈或完全無法降到 0?

  • 電源端接錯: 請確認可變電阻兩端腳位是否分別插在 5V 與 GND。

  • 避免使用 ADC2 腳位: 本範例選用的 GPIO 36 (ADC1) 非常穩定。若改用 ADC2 腳位(如 GPIO 2, 4, 12 等),當 ESP32 開啟 Wi-Fi 功能時會導致類比讀取受干擾或失效。

 

五、 結語與下一篇教學

恭喜你!成功掌握了使用可變電阻與 ESP32 ADC 類比輸入控制 LED 亮度的技巧。學會了類比訊號讀取後,你可以把前面幾篇學到的「DHT11 溫濕度數據」或「超音波測距數據」結合旋鈕控制,打造更多互動式的物聯網專題!下一篇教學,我們將帶大家解鎖更多實用的物聯網感測與控制專題!

▼【ESP32教學】教學總索引頁面

相關文章