搜尋程式碼

ESP32 教學 23/55 - 使用 ESP32 讀取電位器電壓 | SunFounder 嘅 ESP32 IoT 套件

ESP32 教學 23/55 - 使用 ESP32 讀取電位器電壓 | SunFounder 嘅 ESP32 IoT 套件

喺呢個教學入面,我哋會學吓點樣用SunFounder嘅ESP32模組去量度一個可變電阻(potentiometer)嘅直流電壓。呢個項目亦都會示範點樣根據可變電阻嘅位置去令LED漸變光暗。當你逆時針擰個可變電阻嗰陣,電壓讀數會下降,LED亦會跟住變暗。呢個練習會幫你實際了解點樣用ESP32入面嘅模擬轉數碼轉換器(ADC)。

可變電阻
可變電阻或者可變電阻器
可變電阻或者可變電阻器

ESP32係一個功能強大嘅微控制器,內置Wi-Fi同藍牙功能,令到佢好適合用喺物聯網項目。喺呢個教學入面,我哋會用佢嘅模擬輸入功能去讀取可變電阻嘅電壓水平,同時根據呢啲讀數去控制LED嘅亮度。結果就係一個有反應嘅LED,當你調校可變電阻嗰陣,佢嘅光暗強度會隨住變化。

硬件講解

做呢個項目,我哋需要以下零件:

  • ESP32模組:主要嘅微控制器,負責讀取可變電阻嘅電壓同控制LED。
  • 可變電阻:一個用嚟調節電壓嘅可變電阻器。佢有三隻腳:兩隻係固定電阻,一隻係會變化嘅。
  • LED:一個發光二極管,佢嘅亮度會根據可變電阻嘅位置嚟控制。
  • 電阻:一個220歐姆嘅電阻,用嚟限制流經LED嘅電流。

可變電阻嘅運作原理係改變佢各隻腳之間嘅電阻值,令到佢可以產生一個電壓,而ESP32可以透過佢嘅ADC去讀取呢個電壓。LED嘅亮度就用脈衝寬度調變(PWM)去控制,根據模擬讀數去調整供應畀LED嘅功率。

數據手冊詳情

接線指示

ESP32-23-fading-LED_pot-wiring

要接駁啲零件,首先連接可變電阻。將佢其中一隻外側腳連去ESP32上面嘅3.3V電源。將另一隻外側腳連去接地(GND)。可變電阻嘅中間腳就會連去ESP32上面嘅35號腳,呢個係用嚟讀取模擬電壓嘅。

跟住,對於LED,將較長嘅腳(陽極)透過一個220歐姆電阻連去ESP32上面嘅26號腳。將LED較短嘅腳(陰極)連去接地。確保所有連接都穩固,同埋再三檢查LED嘅方向,以免整壞佢。

Potentiometer or variable resistor

程式碼示例同講解

以下嘅程式碼片段示範咗點樣設定ESP32去讀取可變電阻同控制LED:

const int potPin = 35; // 可變電阻連接到
const int ledPin = 26; // LED連接到

// PWM設定
const int freq = 5000; // PWM頻率
const int resolution = 12; // PWM解像度(位元)

喺呢段節錄入面,我哋定義咗可變電阻同LED嘅腳位。同時亦設定咗PWM頻率同解像度,呢啲會決定LED嘅亮度級別。

跟住,我哋會初始化設定:

void setup() {
  Serial.begin(115200);

  // 設定PWM
  ledcAttach(ledPin, freq, resolution);
}

喺setup函數入面,我哋初始化串行通訊,同埋為LED設定PWM參數。呢個設定喺程式開始嗰陣只會執行一次。

最後,loop函數會不斷讀取可變電阻嘅數值,並且調整LED嘅亮度:

void loop() {
  int potValue = analogRead(potPin); // 讀取可變電阻嘅數值
  uint32_t voltage_mV = analogReadMilliVolts(potPin); // 讀取電壓(毫伏)

  ledcWrite(ledPin, potValue);
  // 為咗簡潔,省略串行輸出
}

喺loop入面,我哋讀取可變電阻嘅模擬數值,然後將佢轉換成控制LED亮度嘅訊號。串行輸出會顯示可變電阻嘅數值同電壓,幫你核實讀數。

示範/預期效果

當電路正確接駁好,程式碼亦都上載咗之後,擰個可變電阻應該會令到串行監視器顯示嘅電壓讀數有相應嘅變化。LED應該會隨住你調校可變電阻而順暢咁漸變光暗。如果LED冇預期嘅反應,檢查吓啲接線,同埋確保可變電阻運作正常(喺影片11:30嘅位置)。

影片時間戳

  • 00:00 開始
  • 2:02 咩係可變電阻
  • 4:15 量度可變電阻嘅電阻值
  • 6:59 文件頁面
  • 8:56 接線講解
  • 12:28 Arduino程式碼講解
  • 15:58 喺Arduino IDE入面選擇ESP32板同COM埠
  • 17:40 用ESP32讀取可變電阻數值嘅示範

圖片

Potentiometer or variable resistor
Potentiometer or variable resistor
ESP32-23-fading-LED_pot-schematic
ESP32-23-fading-LED_pot-schematic
ESP32-23-fading-LED_pot-wiring
ESP32-23-fading-LED_pot-wiring
potentiometer
potentiometer
822-ESP32 Tutorial 23/55- Arduino code for fading LED
語言: C++
const int potPin = 35; // Potentiometer connected to
const int ledPin = 26; // LED connected to

// PWM settings
const int freq = 5000; // PWM frequency
const int resolution = 12; // PWM resolution (bits)

void setup() {
  Serial.begin(115200);

  // Configure PWM
  ledcAttach(ledPin, freq, resolution);
}

void loop() {

  int potValue = analogRead(potPin); // read the value of the potentiometer
  uint32_t voltage_mV = analogReadMilliVolts(potPin); // Read the voltage in millivolts

  ledcWrite(ledPin, potValue);

  Serial.print("Potentiometer Value: ");
  Serial.print(potValue);
  Serial.print(", Voltage: ");
  Serial.print(voltage_mV / 1000.0); // Convert millivolts to volts
  Serial.println(" V");

  delay(100);
}

資源與參考資料

文件📁

冇文件可用。