在前面幾篇教學中,我們學習了如何透過 Arduino 輸出訊號(如控制 LED 閃爍與跑馬燈)。本篇將帶你跨入 數位輸入(Digital Input) 的領域!我們將使用最常見的「按鍵開關(Push Button)」結合 LED 燈,讓 Arduino 接收外部按下的開關訊號並做出相應的控制,深入理解 I/O(輸入/輸出)的核心概念。
💡 實驗原理:什麼是數位輸入(Digital Input)?
Arduino 的 GPIO 引腳可以設定為 INPUT(輸入) 或 OUTPUT(輸出):
數位輸入(Digital Input):專門讀取外部元件的狀態。因為是「數位」訊號,Arduino 只會讀取到兩種狀態:
高電位(HIGH / 1):代表約 5V 電壓。
低電位(LOW / 0):代表 0V(GND 地線)。
按鍵開關本身是一個簡單的導通元件。未按下時,電路處於斷路狀態;按下時,內部金屬片閉合導通。
🛠️ 準備材料與零件清單
進行本實驗前,請先準備以下電子零件:
主控板:Arduino Uno R3 x 1
傳輸線:USB Type-B 傳輸線 x 1
發光元件:5mm 直插式 LED x 1
輸入元件:4腳微動按鍵開關 x 1
限流電阻:220Ω 直插電阻 x 1(保護 LED)
下拉電阻:10kΩ 直插電阻 x 1(穩定按鍵輸入電位)
開發工具:麵包板 x 1、麵包板單芯跳線若干
🛒 還沒有材料嗎? 推薦選購 【米羅科技】Arduino 程式學習初學者必備套件組 ,一次備齊所有常用感測器與電子元件!
🔍 按鍵開關引腳結構說明
四腳按鍵開關(Tactile Switch)內部引腳結構如下:
內部連接:按鈕內部左側兩個引腳彼此相通,右側兩個引腳也彼此相通。
按壓導通:當按紐被按下時,左右兩側才會互相導通(形成通路)。
💡 小技巧:若不確定按鈕引腳方向,可以利用萬用錶的蜂鳴檔測試導通狀態,或對角接線以確保正確運作。
🔌 電路圖與接線步驟 (Wiring Guide)
請參考以下步驟進行麵包板接線:
LED 燈電路:
將 LED 陽極(長腳)串聯 220Ω 限流電阻,接至 Arduino 的 Pin 11。
將 LED 陰極(短腳)接至 Arduino 的 GND。
按鍵開關電路(下拉電阻接法):
按鍵開關的一端接至 5V 電源。
按鍵開關的另一端接至 Arduino 的 Pin 7。
同時在 Pin 7 與 GND 之間接入一顆 10kΩ 電阻(作為下拉電阻 Pull-down Resistor),確保按鈕未按下時 Pin 7 穩定維持在 LOW 電位,避免雜訊干擾。
💻 Arduino 範例程式碼
請複製以下程式碼並燒錄至 Arduino 開發板中:
程式:
/*
* 【Arduino入門教學】第八篇:按鍵開關控制 LED
* 米羅科技文創學院版權所有
*/
const int LED_PIN = 11; // 定義 LED 接在數位引腳 Pin 11
const int BUTTON_PIN = 7; // 定義按鍵開關接在數位引腳 Pin 7
int buttonState = 0; // 儲存按鍵狀態的變數
void setup() {
pinMode(LED_PIN, OUTPUT); // 設定 Pin 11 為數位輸出模式
pinMode(BUTTON_PIN, INPUT); // 設定 Pin 7 為數位輸入模式
}
void loop() {
// 讀取 Pin 7 的數位電位狀態 (HIGH 或 LOW)
buttonState = digitalRead(BUTTON_PIN);
// 判斷按鍵是否被按下
if (buttonState == HIGH) {
digitalWrite(LED_PIN, HIGH); // 按鍵按下(高電位):點亮 LED
} else {
digitalWrite(LED_PIN, LOW); // 按鍵未按下(低電位):熄滅 LED
}
}
🧠 程式解說與邏輯分析
定義常數與變數:
使用
const int指定固定引腳,提升程式可讀性與維護性。buttonState用於儲存digitalRead()讀取到的狀態(HIGH或LOW)。
pinMode()關鍵設定:pinMode(LED_PIN, OUTPUT);設定引腳發出電壓驅動 LED。pinMode(BUTTON_PIN, INPUT);設定引腳讀取外部電壓。
digitalRead()讀取訊號:進入
loop()後,Arduino 會持續輪詢(Poll)Pin 7。當按鍵按下時,5V 導通至 Pin 7,
digitalRead(BUTTON_PIN)回傳HIGH,觸發digitalWrite(LED_PIN, HIGH)點亮 LED。當按鍵放開時,透過 10kΩ 下拉電阻連至 GND,Pin 7 讀取到
LOW,LED 熄滅。
❓ 常見問題 FAQ
Q1:為什麼按鍵電路上一定要加 10kΩ 電阻?
如果沒有加 10kΩ 下拉電阻,當按鈕未按下時,Pin 7 引腳會處於「浮空狀態(Floating)」,這時 Arduino 會受到空氣中的電磁波干擾,導致讀取到的訊號在 0 與 1 之間隨機跳動,LED 就會不正常閃爍。
Q2:可以不加外接的 10kΩ 電阻嗎?
可以!Arduino 內建了「上拉電阻(Internal Pull-up Resistor)」。只需在程式設定 pinMode(BUTTON_PIN, INPUT_PULLUP);,按鈕另一端改接 GND,即可省去外部電阻。此時未按下為 HIGH,按下時為 LOW(邏輯相反)。
🚀 總結與下一步
通過本篇學習,你已經掌握了:
數位輸入
digitalRead()的使用方法。按鍵開關的實體接線與下拉電阻作用。
透過條件判斷(
if-else)實現輸入控制輸出的基礎邏輯。
🔗 相關資源與文章推薦
⬅️ 上一篇:【Arduino入門教學課程】第七篇:LED 跑馬燈實作
➡️ 下一篇:【Arduino入門教學課程】第九篇:搶答器設計


