ESP32 創客入門範例:LED 閃爍與按鈕控制教學
ESP32 是一款非常受歡迎的 Wi-Fi + Bluetooth 開發板,憑藉低成本與強大功能,廣泛應用在物聯網、智慧家居和創客專案中。如果你剛開始接觸 ESP32,不妨從最經典的 LED 閃爍與按鈕控制範例開始練習,熟悉 GPIO 控制和基礎程式設計。
本文將帶你一步步完成以下功能:
- 讓板載 LED 閃爍。
- 使用按鈕控制 LED 亮滅。
- 在序列埠監控按鈕狀態。
準備材料
- ESP32 開發板(如 DevKitC、NodeMCU-32S)
- USB 傳輸線
- 一顆按鈕(Button)
- 連接線與麵包板(Breadboard,可選)
硬體連接
- LED ESP32 板載 LED 通常連接在 GPIO 2,不需要額外接線即可使用。
- 按鈕 將按鈕一腳接到 GPIO 15,另一腳接 GND。程式中會啟用內部上拉電阻,省去外接電阻的麻煩。
程式碼範例
以下是完整程式碼,使用 Arduino IDE 開發:
// 定義腳位
const int ledPin = 2; // ESP32 板載 LED,一般在 GPIO 2
const int buttonPin = 15; // 外接按鈕接到 GPIO 15
// 按鈕狀態變數
int buttonState = 0;
void setup() {
// 初始化 LED 腳位為輸出
pinMode(ledPin, OUTPUT);
// 初始化按鈕腳位為輸入
pinMode(buttonPin, INPUT_PULLUP); // 使用內部上拉電阻
// 開啟序列埠,方便觀察
Serial.begin(115200);
}
void loop() {
// 讀取按鈕狀態
buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
// 按鈕按下,LED 亮
digitalWrite(ledPin, HIGH);
Serial.println("Button Pressed: LED ON");
} else {
// 按鈕沒按,LED 滅
digitalWrite(ledPin, LOW);
}
// LED 閃爍效果
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}
程式解析
- GPIO 設定
pinMode(ledPin, OUTPUT):將 LED 腳位設為輸出。pinMode(buttonPin, INPUT_PULLUP):將按鈕腳位設為輸入並啟用內部上拉電阻。
- 讀取按鈕狀態
- 使用
digitalRead(buttonPin)讀取按鈕訊號。 - 按下按鈕時值為
LOW,未按時為HIGH(因為上拉電阻)。
- 使用
- 控制 LED
digitalWrite(ledPin, HIGH):亮燈。digitalWrite(ledPin, LOW):熄燈。- 並加上閃爍效果,每 0.5 秒切換一次。
- 序列埠輸出
Serial.println("Button Pressed: LED ON")可在 Arduino IDE 的序列監控視窗觀察按鈕按下事件。
延伸應用
這個簡單範例是 ESP32 的入門練習,接下來你可以做一些延伸應用,例如:
- 用 Wi-Fi 將按鈕狀態傳到手機或網頁。
- 連接 光敏電阻或溫度感測器,控制 LED 或其他設備。
- 結合 藍牙 BLE 實現手機遠端控制。
這些應用都是物聯網專案的基礎,非常適合創客實驗和學習。
小結
透過這個範例,你學會了:
- ESP32 GPIO 的基本輸入輸出控制。
- 如何讀取按鈕狀態並用 LED 反饋。
- 使用序列埠觀察訊號。
如果你是 ESP32 初學者,這個範例是打好基礎的最佳起點。接下來你可以試著加入感測器、Wi-Fi 或藍牙功能,把 ESP32 打造成一個完整的智慧裝置。
