ESP32, IOT物聯網

【ESP32教學】第四篇:GPIO數位輸出與LED燈程式控制實作

一、 實驗說明:什麼是數位訊號輸出(Digital Output)?

在上一篇我們學會了透過序列埠讓 ESP32 與電腦「對話」,這一篇我們將正式進入硬體控制領域!

數位訊號(Digital Signal)是指使用離散(不連續)的 0 與 1 來表示資訊:

  • 高電位(HIGH / 1):代表 3.3V 電壓輸出。

  • 低電位(LOW / 0):代表 0V 。

本實驗我們將使用 ESP32 的通用輸入輸出腳位(GPIO),透過寫程式控制高低電位,來開關外接的 LED 燈,這也是所有物聯網繼電器、馬達與開關控制的基本功!

DIGITAL HIGH LOW

  • 接下來我們就使用數位訊號輸出來做一個稍微複雜一點的交通紅綠燈實驗,其實聰明的讀者們可以看出來這個實驗就是將單個LED的實驗擴展成3 個顏色的LED,就可以實現我們模擬交通燈的實驗了。
  • LED燈實驗是比較基礎的實驗之一,我們利用ESP32的數位I/O Pins 和外接直插LED 燈來完成這個實驗。

 

二、 實驗材料準備清單

本篇實驗所需的硬體元件如下:

  • ESP32-E DevKit
  • USB 傳輸線
  • 直插LED (紅色、黃色、綠色)
  • 220Ω直插電阻
  • 麵包板
  • 麵包板跳線

🛒  還沒有材料嗎? 歡迎直接購買米羅為您搭配好的 ESP32 物聯網應用學習套件,新手零基礎也能輕鬆上手!

 

三、 電路接線與原理說明

在手動接線前,請特別注意以下兩個元件特徵:

1. LED 的極性區分(長腳與短腳)

  • 正極(陽極 Anode):腳位較長,需連接至 ESP32 的 GPIO 控制腳位。

  • 負極(陰極 Cathode):腳位較短,需經由限流電阻連接至 GND(接地)。

LED

2. 為什麼一定要接限流電阻?

ESP32 的 GPIO 腳位輸出電壓為 3.3V,若直接連接 LED 燈,過大的電流可能會直接燒毀 LED 或損壞 ESP32 的晶片腳位。因此我們必須串聯一顆 220Ω ~ 330Ω 的電阻來進行限流保護。

 

3. 實體接線步驟

  • 將 ESP32 插在麵包板上。

  • 將 LED 長腳(正極)接到 ESP32 的 GPIO

  • 將 LED 短腳(負極)接到 220Ω 電阻的一端。

  • 將電阻的另一端連接至 ESP32 的 GND 腳位。

ESP32 GPIO connect LED

ESP32 GPIO

 

四、 實作實驗程式碼與步驟

電路接好後,請將以下程式碼複製到 Arduino IDE 中並進行燒錄:

1. 範例程式碼

程式:

int val;
int redled =15; 
int yellowled =2;
int greenled =4;
void setup()
{
  pinMode(redled, OUTPUT);
  pinMode(yellowled, OUTPUT);
  pinMode(greenled, OUTPUT);
}
void loop()
{
  digitalWrite(redled, HIGH);
  delay(1000);
  digitalWrite(redled, LOW);
  digitalWrite(yellowled, HIGH);
  delay(200);
  digitalWrite(yellowled, LOW);
  digitalWrite(greenled, HIGH);
  delay(1000);
  digitalWrite(greenled, LOW);
}

 

程式說明:

  • 第 1 列定義數位接口GPIO15 Pin 。
  • 第 2 列定義數位接口GPIO2 Pin 。
  • 第 3 列定義數位接口GPIO4 Pin 。
  • 第 6 列定義紅色LED Pin為輸出Pin。
  • 第 7 列定義黃色LED Pin為輸出Pin。
  • 第 8 列定義綠色LED Pin為輸出Pin。
  • 第 12 列點亮紅色LED。
  • 第 13 列延遲1 秒。
  • 第 14 列點熄滅紅色LED。
  • 第 15 列點亮黃色LED。
  • 第 16 列延遲2 秒。
  • 第 17 列熄滅黃色LED。
  • 第 18 列點亮綠色LED。
  • 第 19 列延遲1 秒。
  • 第 20 列熄滅綠色LED。

 

2. 燒錄與測試步驟

  1. 用 USB 傳輸線將 ESP32 連接至電腦。

  2. 在 Arduino IDE 的 [工具] ➜ [開發板] 選擇 ESP32-E DevKit 或 NodeMCU-32S,請統一選擇:NodeMCU-32S,並選擇正確的 COM Port

  3. 點選 [上傳 (Upload)] 按鈕。

  4. 上傳完成後,就可以看到我們自己的設計控制的交通號誌燈了!

 

五、 初學者常見卡關問題與排錯指南(Troubleshooting)

  • Q:程式上傳成功,但外接 LED 完全不亮?

    1. 檢查極性:請確認 LED 的長腳是否接在 GPIO ,短腳是否接 GND。若接反了 LED 是不會發光的。

    2. 檢查線路:確認杜邦線是否牢固插在麵包板的同一排插孔內。

    3. 腳位編號:ESP32 板子上記標的 GPIO ,請確認沒有錯接到其他腳位。

 

六、 結語與下一篇教學

學會了 GPIO 數位輸出後,你就具備了控制各類電子開關(如繼電器、蜂鳴器、抽水馬達)的能力!後面我們將加入「數位輸入(Digital Input)」元件——按鍵開關,學習如何讓 ESP32 接收外界的按鈕訊號!

👉 上一篇回顧【ESP32教學】第三篇:開始使用Arduino IDE編寫程式與序列埠通信

👉 下一篇預告ESP32教學】第五篇:GPIO數位輸入原理與按鈕控制LED實作

相關文章