搜尋程式碼

ESP32 教學 9/55 - 用按鈕切換 LED,按一下開,按一下關 - 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 with resistor
Push button with resistor
Push button without resistor
Push button without resistor
Push button without resistor
Push button without resistor
Push button with 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);
  }
}

資源與參考資料

暫時冇資源。

文件📁

冇文件可用。