在學會控制單顆 LED 的閃爍之後,接下來我們要進入更具實用性的進階應用——「Arduino 模擬紅綠燈交通號誌控制」!
交通號誌是現代生活中最常見的自動控制系統之一。這個實驗看似複雜,其實原理就是將單顆 LED 的控制概念擴展到 紅、黃、綠三色 LED。透過本篇教學,你將學會如何規劃多 Pin 腳的數位輸出(Digital Output),並透過 delay 時間差控制閃爍順序,打造屬於自己的智慧交通號誌。
🛠️ 實驗所需材料與工具
在開始動手之前,請準備以下硬體元件:
- Arduino Uno R3
- USB 傳輸線
- 直插LED (紅色、黃色、綠色)
- 220Ω直插電阻
- 麵包板
- 麵包板跳線
🛒 新手必備推薦:還沒有準備好材料嗎?推薦使用 米羅科技-Arduino 程式學習套件組,一包搞定所有基礎實驗硬體,學習不卡關!
🔌 電路接線說明 (Circuit Wiring)
將三顆 LED 的陽極(長腳)分別接至 Arduino 的數位 Pin 腳,陰極(短腳)經由 220Ω 限流電阻 連接至 GND(接地端)。
接線對照表:
接線說明:
💡 貼心提醒:LED 具有正負極性(長腳為正極/陽極、短腳為負極/陰極),若接反 LED 將無法發光。
💻 Arduino 交通燈程式碼 (Source Code)
請開啟 Arduino IDE,新建一個 Sketch 檔案,複製並貼上以下完整程式碼:
/*
* Arduino 入門教學 第六篇:交通燈號誌控制
* 發佈單位:米羅科技文創學院 (Mirotek)
* 說明:透過 Pin 10、Pin 7、Pin 4 控制紅黃綠三色 LED 實現交通號誌輪替
*/
// 1. 定義數位腳位 Pin 號
const int redLed = 10; // 紅燈接在 Digital Pin 10
const int yellowLed = 7; // 黃燈接在 Digital Pin 7
const int greenLed = 4; // 綠燈接在 Digital Pin 4
void setup() {
// 2. 設定所有 LED 腳位為輸出模式 (OUTPUT)
pinMode(redLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
pinMode(greenLed, OUTPUT);
}
void loop() {
// === 第一階段:紅燈亮起 1 秒 ===
digitalWrite(redLed, HIGH); // 點亮紅燈
delay(1000); // 維持 1000 毫秒 (1秒)
digitalWrite(redLed, LOW); // 熄滅紅燈
// === 第二階段:黃燈亮起 0.2 秒 ===
digitalWrite(yellowLed, HIGH); // 點亮黃燈
delay(200); // 維持 200 毫秒 (0.2秒)
digitalWrite(yellowLed, LOW); // 熄滅黃燈
// === 第三階段:綠燈亮起 1 秒 ===
digitalWrite(greenLed, HIGH); // 點亮綠燈
delay(1000); // 維持 1000 毫秒 (1秒)
digitalWrite(greenLed, LOW); // 熄滅綠燈
}
程式說明:
- 第 1 列定義數位接口10Pin 。
- 第 2 列定義數位接口7Pin 。
- 第 3 列定義數位接口4Pin 。
- 第 6 列定義紅色LED Pin為輸出Pin。
- 第 7 列定義黃色LED Pin為輸出Pin。
- 第 8 列定義綠色LED Pin為輸出Pin。
- 第 12 列點亮紅色LED。
- 第 13 列延遲1 秒。
- 第 14 列點熄滅紅色LED。
- 第 15 列點亮黃色LED。
- 第 16 列延遲0.2 秒。
- 第 17 列熄滅黃色LED。
- 第 18 列點亮綠色LED。
- 第 19 列延遲1 秒。
- 第 20 列熄滅綠色LED。
下載程序完成後就可以看到我們自己的設計控制的交通號誌燈了。
🔍 程式解說與重點剖析
變數宣告 (
const int):在程式最上方定義
redLed、yellowLed與greenLed,可以讓程式碼可讀性更高。未來若要更換腳位,只需在最上方修改數字即可。初始化設定 (
setup):pinMode(pin, OUTPUT)將三個指定腳位設置為 輸出模式,告知 Arduino 這些腳位將用來輸出電壓控制外部元件。主程序循環 (
loop):digitalWrite(Pin, HIGH):輸出 5V 高電位,點亮 LED。digitalWrite(Pin, LOW):輸出 0V 低電位,熄滅 LED。delay(毫秒):讓程式暫停指定的毫秒數(1000ms = 1秒)。透過「紅燈亮 ➔ 熄滅 ➔ 黃燈亮 ➔ 熄滅 ➔ 綠燈亮 ➔ 熄滅」的順序循環執行,即完成了交通號誌的模擬!
💡 常見問題與除錯指南 (FAQ)
Q1:程式燒錄成功,但 LED 完全不亮怎麼辦?
請檢查 LED 的正負極方向,長腳應連接 Arduino 腳位,短腳經電阻接至 GND。
確認杜邦線是否接觸不良,或更換麵包板位置測試。
Q2:為什麼一定要加 220Ω 限流電阻?
Arduino 數位腳位輸出電壓為 5V,而一般 LED 的工作電壓通常在 2V~3.2V 之間。如果不加電阻,過大的電流會直接燒毀 LED 或 Arduino 晶片!
Q3:如何修改紅綠燈的持續時間?
只要修改
delay()括號內的數字即可。例如將紅燈改為 5 秒,把delay(1000)改為delay(5000)。
🎯 延伸進階挑戰
試著動腦想想看,真實世界的交通號誌有哪些細節可以進一步加入程式中?
綠燈閃爍提醒:在綠燈轉黃燈前,讓綠燈快速閃爍 3 次。
行人按鈕過馬路:加入一個按鈕開關(Button),當行人按下時才觸發紅燈切換(可參考我們的 [Arduino 按鈕控制教學])。

