跳到:
ESP32 教學 1/55 - SunFounder ESP32 IoT 學習套件軟件同 Arduino IDE 簡介 ESP32 教學 2/55 - 咩係 ESP32、相機擴展板、開箱 SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 3/55 - 電阻、LED、麵包板項目:Hello LED -ESP32 IoT 學習套件 ESP32 教學 4/55 - 數據類型 定義變量 Int、bool、char、序列監視器 - ESP32 IoT 套件 ESP32 教學 5/55 - LED 漸變,控制 LED 亮度 - ESP32 物聯網學習套件 ESP32 教學 6/55 - 使用 RGB LED 項目 2.3 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 7/55 - 使用陣列配合 ESP32 Arduino 程式設計 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 Tutorial 8/55 -Walking Light 74HC595 Shift register -SunFounder's ESP32 IoT Learning kit ESP32 教學 9/55 - 用按鈕切換 LED,按一下開,按一下關 - SunFounder ESP32 IoT 套件 ESP32 教學 10/55 - 使用七段顯示器 74HC595 嘅數字計數器 - ESP32 IoT 學習套件 ESP32 教學 11/55 - 使用 LCD1602 LCD2004 同 ESP32 - SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 12/55 - WS2812 RGB 燈帶 4 項目,配合 SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 13/55 - Arduino 用有源蜂鳴器發出嗶聲 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 14/55 - 使用 SunFounder ESP32 IoT 學習套件播放自訂音樂音符 ESP32 教學 15/55 - 用 ESP32 L293D 控制直流馬達速度 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 16/55 - 使用 ESP32 同 L293D 嘅迷你水泵 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 17/55 - 使用 ESP32 同電位器控制伺服馬達 - ESP32 IoT 學習套件 ESP32 教學 18/55 - 使用 ESP32 偵測傾斜 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 19/55 - 使用紅外線感測器偵測障礙物 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 20/55 - 循線模組 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 21/55 - 用 PIR 動作感應器偵測人體 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 22/55 - 用 LED Arduino 感受光線 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 23/55 - 使用 ESP32 讀取電位器電壓 | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 24/55 - 量度土壤濕度用於灌溉 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 25/55 - 使用 NTC 同 LCD 測量溫度 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 26/55 - 使用搖桿配合 Arduino 採取行動 | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 27/55 - 用超聲波感測器量度距離 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 28/55 - DHT11 溫度感測器配合 LCD | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 29/55 - 用 ESP32 讀取紅外線遙控器按鍵| SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 30/55 - 使用 Adafruit IO 服務透過 MQTT 喺網頁上控制伺服摩打 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 31/55 - 專案 LED 燈帶配合避障功能 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教程 32/55 - 汽车倒车距离警告(带LCD同蜂鸣器)| SunFounder嘅物联网学习套件 ESP32 教學 33/55 - 使用 SunFounder 嘅 ESP32 IoT 學習套件整數碼骰仔 ESP32 教學 34/55 - 用 RGB LED 同旋鈕整顏色漸變 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 35/55 - 植物監測器,土壤、溫度同光線 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 36/55 - 猜數字遊戲 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 37/55 - 使用藍牙應用程式配合 ESP32 BLE | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 38/55 - 用手機控制 RGB LED | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 39/55 - 用 ESP32 做藍牙音樂播放器 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 40/55 - 讀寫 Micro SD 卡 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 41/55 - 使用 Micro SD 卡嘅 MP3 播放器 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 42/55 - 用相機影相並儲存喺 Micro SD CAM-1 | SunFounder 嘅 ESP32 套件 ESP32 教程 43/55 - 物聯網互聯網天氣站 | SunFounder 嘅 ESP32 物聯網學習套件 ESP32 教學 44/55 - ESP32 相機網絡伺服器透過 WiFi 傳輸視頻串流 CAM-2 | SunFounder 嘅 ESP32 套件 ESP32 教學 45/55 - 自訂串流伺服器配合 LED 控制 CAM-3 l SunFounder 嘅 ESP32 學習套件 ESP32 教學 46/55 - 使用 HiveMQ MQTT 進行遠程溫度監控 | SunFounder 嘅 ESP32 套件 ESP32 教學 47/55 - 使用 MQTT 透過互聯網嘅 WS2812 CheerLights | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 48/55 - 遠程溫度監控同 LED 控制 MQTT | SunFounder 嘅 ESP32 IoT 套件 ESP32 教學 49/55 - 透過 Adafruit IoT 控制直流摩打 | SunFounder 嘅 ESP32 套件 ESP32 教學 50/55 - 喺世界任何地方控制 RGB LED | SunFounder 嘅 ESP32 套件 ESP32 Tutorial 51/55 - Temperature and Humidity over WiFi with DHT | SunFounder's ESP32 IoT Learning Kit ESP32 教學 52/55 - WS2812 CheerLights MQTT 全球同步連 LCD | SunFounder ESP32 IoT 套件 ESP32 教學 53/55 - 建立 LCD 網絡時鐘 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 54/55 - 透過 Wi-Fi 設定 WS2812 LED 燈條顏色 | SunFounder 嘅 ESP32 IoT 學習套件 ESP32 教學 55/55 - 點樣量度 12V、24V 或者 100V 直流電壓 | SunFounder 嘅 ESP32 IoT 學習套件
ESP32 教學 9/55 - 用按鈕切換 LED,按一下開,按一下關 - SunFounder ESP32 IoT 套件
喺呢個教學入面,我哋會學吓點樣用一個按鈕去切換LED開同關,用嘅係ESP32微控制器。呢個項目會示範點樣讀取按鈕嘅狀態,同埋相應咁控制LED。當撳掣嗰陣,LED會着,放開嗰陣就會熄。呢個係好多用ESP32嘅互動項目嘅基礎概念。
ESP32係一個功能強大嘅微控制器,內置Wi-Fi同藍牙功能,適合各種物聯網應用。喺呢一課,我哋會用SunFounder ESP32入門套件入面嘅ESP32,套件包含電阻同LED等基本元件,嚟整一個簡單電路。有關接線同代碼嘅詳細解釋,請參考影片(影片00:00位置)。
硬件講解
呢個項目嘅主要元件包括ESP32微控制器、一個按鈕、一個LED同電阻。ESP32係項目嘅大腦,根據按鈕嘅狀態去控制LED。按鈕畀用戶同電路互動,而LED就喺撳掣嗰陣提供視覺反饋。
按鈕嘅運作原理係撳落去嗰陣閉合電路,令電流可以流通。呢個動作會向ESP32指定嘅輸入引腳發送一個高電平訊號,然後可以喺代碼入面讀取。連接按鈕嘅電阻確保喺冇撳掣嗰陣引腳有一個明確嘅狀態,防止出現唔穩定嘅行為。
帶電阻嘅按鈕
接線說明
要接好電路,首先將LED較長嘅引腳(陽極)連接到一個220歐姆電阻。將電阻嘅另一端連接到ESP32嘅GPIO 26引腳。LED較短嘅引腳(陰極)應該連接到地線。跟住攞個按鈕,將一邊連接到板上嘅3.3V電源。按鈕嘅另一邊連接到GPIO 14引腳。
冇電阻嘅按鈕
冇電阻嘅按鈕
帶電阻嘅按鈕
帶電阻嘅按鈕
另外,放一個10k歐姆電阻由GPIO 14引腳連接到地線,確保喺冇撳掣嗰陣引腳讀到低電平。最後,將ESP32嘅地線連接到麵包板上嘅公共地線。呢個設置會令ESP32可以讀取按鈕狀態,並相應咁控制LED。
代碼示例同講解
程式嘅核心首先用常數定義按鈕同LED嘅引腳號碼。咁樣可以確保引腳分配喺程式執行期間保持不變。
// 設定引腳號碼
const int buttonPin = 14; // 按鈕引腳
const int ledPin = 26; // LED引腳
喺setup()函數入面,我哋初始化串行監視器,並將按鈕引腳設定為輸入,同時將LED引腳配置為輸出。咁樣準備好ESP32去讀取按鈕同控制LED。
void setup() {
Serial.begin(115200);
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
喺loop()函數入面,程式不斷讀取按鈕狀態,並將佢打印到串行監視器。如果撳咗掣,LED就會着;否則就會熄。呢個邏輯對於根據按鈕狀態切換LED嚟講好重要。
void loop() {
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
delay(100);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
呢個基本功能令LED可以直接回應按鈕。有關項目嘅更多細節同完整代碼,請參考提供嘅影片(影片14:00位置)。
示範/預期效果
一旦接好線並上傳代碼,撳個按鈕應該會令LED着,放開就會令LED熄。呢個行為確認按鈕狀態被正確讀取。如果LED冇按預期回應,請檢查接線,並確保按鈕正常運作。
喺測試期間,記得觀察串行監視器嘅按鈕狀態讀數。你應該會喺撳掣嗰陣見到'1',放開嗰陣見到'0'。如果讀數出現唔穩定嘅波動,可能表示有接線問題,或者需要喺代碼入面加入額外嘅去抖邏輯。
影片時間戳
00:00 開始
1:48 項目介紹
3:10 開關同按鈕解釋
7:19 接線解釋
12:25 按鈕嘅Arduino代碼解釋
15:56 選擇ESP32板同COM端口
17:38 項目示範
18:33 項目二:切換同LED
19:09 切換LED嘅Arduino代碼
21:16 切換LED示範
圖片
Push button with resistor
Push button with resistor
Push button without resistor
Push button without resistor
Push button with resistor
Push button with resistor
Push button with resistor
Push button without resistor
Push button without resistor
Push button with resistor
代碼
808-ESP32 Tutorial 9/55 - Arduino code push button
語言: C++
檢視程式碼
// set pin numbers
const int buttonPin = 14; // Button pin
const int ledPin = 26; // LED pin
// variable for storing the button status
int buttonState = 0;
void setup() {
Serial.begin(115200);
// initialize the button pin as an input
pinMode(buttonPin, INPUT);
// initialize the LED pin as an output
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the state of the button value
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
delay(100);
// if the button is pressed
if (buttonState == HIGH) {
// turn LED on
digitalWrite(ledPin, HIGH);
} else {
// turn LED off
digitalWrite(ledPin, LOW);
}
}