ESP32 創客入門範例:LED 閃爍與按鈕控制教學

ESP32 是一款非常受歡迎的 Wi-Fi + Bluetooth 開發板,憑藉低成本與強大功能,廣泛應用在物聯網、智慧家居和創客專案中。如果你剛開始接觸 ESP32,不妨從最經典的 LED 閃爍與按鈕控制範例開始練習,熟悉 GPIO 控制和基礎程式設計。

本文將帶你一步步完成以下功能:

  1. 讓板載 LED 閃爍。
  2. 使用按鈕控制 LED 亮滅。
  3. 在序列埠監控按鈕狀態。

準備材料

  • ESP32 開發板(如 DevKitC、NodeMCU-32S)
  • USB 傳輸線
  • 一顆按鈕(Button)
  • 連接線與麵包板(Breadboard,可選)

硬體連接

  1. LED ESP32 板載 LED 通常連接在 GPIO 2,不需要額外接線即可使用。
  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);
}


程式解析

  1. GPIO 設定
    • pinMode(ledPin, OUTPUT):將 LED 腳位設為輸出。
    • pinMode(buttonPin, INPUT_PULLUP):將按鈕腳位設為輸入並啟用內部上拉電阻。
  2. 讀取按鈕狀態
    • 使用 digitalRead(buttonPin) 讀取按鈕訊號。
    • 按下按鈕時值為 LOW,未按時為 HIGH(因為上拉電阻)。
  3. 控制 LED
    • digitalWrite(ledPin, HIGH):亮燈。
    • digitalWrite(ledPin, LOW):熄燈。
    • 並加上閃爍效果,每 0.5 秒切換一次。
  4. 序列埠輸出
    • Serial.println("Button Pressed: LED ON") 可在 Arduino IDE 的序列監控視窗觀察按鈕按下事件。

延伸應用

這個簡單範例是 ESP32 的入門練習,接下來你可以做一些延伸應用,例如:

  • Wi-Fi 將按鈕狀態傳到手機或網頁。
  • 連接 光敏電阻或溫度感測器,控制 LED 或其他設備。
  • 結合 藍牙 BLE 實現手機遠端控制。

這些應用都是物聯網專案的基礎,非常適合創客實驗和學習。


小結

透過這個範例,你學會了:

  • ESP32 GPIO 的基本輸入輸出控制。
  • 如何讀取按鈕狀態並用 LED 反饋。
  • 使用序列埠觀察訊號。

如果你是 ESP32 初學者,這個範例是打好基礎的最佳起點。接下來你可以試著加入感測器、Wi-Fi 或藍牙功能,把 ESP32 打造成一個完整的智慧裝置。

Similar Posts