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嘅方向,以免整壞佢。
程式碼示例同講解
以下嘅程式碼片段示範咗點樣設定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
ESP32-23-fading-LED_pot-schematic
ESP32-23-fading-LED_pot-wiring
potentiometer
Potentiometer or variable resistor
ESP32-23-fading-LED_pot-schematic
ESP32-23-fading-LED_pot-wiring
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);
}