Basic Tutorial for Arduino, 入門篇

【Arduino入門教學】第六篇:實作 LED 紅綠燈交通號誌控制(附電路接線圖與程式碼)

turned-off traffic light

在學會控制單顆 LED 的閃爍之後,接下來我們要進入更具實用性的進階應用——「Arduino 模擬紅綠燈交通號誌控制」

交通號誌是現代生活中最常見的自動控制系統之一。這個實驗看似複雜,其實原理就是將單顆 LED 的控制概念擴展到 紅、黃、綠三色 LED。透過本篇教學,你將學會如何規劃多 Pin 腳的數位輸出(Digital Output),並透過 delay 時間差控制閃爍順序,打造屬於自己的智慧交通號誌。

🛠️ 實驗所需材料與工具

在開始動手之前,請準備以下硬體元件:

  • Arduino Uno R3
  • USB 傳輸線
  • 直插LED (紅色、黃色、綠色)
  • 220Ω直插電阻
  • 麵包板
  • 麵包板跳線

🛒 新手必備推薦:還沒有準備好材料嗎?推薦使用 米羅科技-Arduino 程式學習套件組,一包搞定所有基礎實驗硬體,學習不卡關!

👍爆款推薦:程式學習套件組 

購買網址:shop.mirotek.com.tw

 

🔌 電路接線說明 (Circuit Wiring)

將三顆 LED 的陽極(長腳)分別接至 Arduino 的數位 Pin 腳,陰極(短腳)經由 220Ω 限流電阻 連接至 GND(接地端)。

接線對照表:

元件類型顏色 / Pin 腳Arduino 控制腳位 (Pin)備註說明
LED紅色 LED (長腳)Pin 10交通燈-紅燈
LED黃色 LED (長腳)Pin 7交通燈-黃燈
LED綠色 LED (長腳)Pin 4交通燈-綠燈
限流電阻220Ω接至 GND3 顆 LED 短腳皆需經電阻接至 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。

下載程序完成後就可以看到我們自己的設計控制的交通號誌燈了。

 

🔍 程式解說與重點剖析

  1. 變數宣告 (const int)

    在程式最上方定義 redLedyellowLedgreenLed,可以讓程式碼可讀性更高。未來若要更換腳位,只需在最上方修改數字即可。

  2. 初始化設定 (setup)

    pinMode(pin, OUTPUT) 將三個指定腳位設置為 輸出模式,告知 Arduino 這些腳位將用來輸出電壓控制外部元件。

  3. 主程序循環 (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)

 

🎯 延伸進階挑戰

試著動腦想想看,真實世界的交通號誌有哪些細節可以進一步加入程式中?

  1. 綠燈閃爍提醒:在綠燈轉黃燈前,讓綠燈快速閃爍 3 次。

  2. 行人按鈕過馬路:加入一個按鈕開關(Button),當行人按下時才觸發紅燈切換(可參考我們的 [Arduino 按鈕控制教學])。

📚 相關推薦閱讀

相關文章