在日常生活中,我們常在店面招牌、節慶燈飾或舞台效果中看到閃爍流動的 LED 跑馬燈(流水燈)。你是否想過這些炫目的燈光效果是如何實現的呢?
在前幾篇教學中,我們學習了單顆 LED 控制與三色紅綠燈實作。本篇將帶大家進入多 Pin 腳控制的世界,教你運用 for 迴圈(Loop) 技巧,只需短短幾行程式碼,就能輕鬆控制多達 10 顆(甚至更多)LED 燈,打造出動態流暢的跑馬燈燈光秀!
🛠️ 實驗所需材料與工具
在開始搭設電路前,請準備以下硬體元件:
- Arduino Uno R3
- USB 傳輸線
- 直插LED
- 220Ω直插電阻
- 麵包板
- 麵包板跳線
🛒 新手備料首選:不想一顆顆找零件?推薦選購 米羅科技-Arduino 程式學習套件組,一次備齊所有常用元件,讓你的 Arduino 學習之路更暢通!
🔌 電路接線說明 (Circuit Wiring)
我們要將 10 顆 LED 的陽極(長腳)依序連接至 Arduino 的 Digital Pin 2 到 Pin 11,陰極(短腳)則分別串接 220Ω 限流電阻連至 GND(接地)。
接線對照表:
💡 接線小撇步:由於零件較多,建議在麵包板上將所有電阻的另一端統一接到共用負極排(GND 藍線軌),可以讓麵包板佈線更加整齊美觀!
接線說明:
💻 Arduino LED 跑馬燈程式碼 (Source Code)
開啟 Arduino IDE,建立新檔並貼上以下經過註解最佳化的程式碼:
/*
* Arduino 入門教學 第七篇:LED 跑馬燈 / 流水燈控制
* 發佈單位:米羅科技文創學院 (Mirotek)
* 說明:活用 for 迴圈控制 Pin 2 ~ Pin 11 的 10 顆 LED,呈現流水流動效果
*/
// 1. 定義起始腳位與 LED 總數
const int BASE_PIN = 2; // 第一顆 LED 所連接的數位腳位
const int NUM_LEDS = 10; // LED 燈泡總數量
void setup() {
// 2. 使用 for 迴圈批量將 Pin 2 ~ Pin 11 設定為輸出模式 (OUTPUT)
for (int i = BASE_PIN; i < BASE_PIN + NUM_LEDS; i++) {
pinMode(i, OUTPUT);
}
}
void loop() {
// === 第一階段:由左至右依次熄滅 (LOW) ===
for (int i = BASE_PIN; i < BASE_PIN + NUM_LEDS; i++) {
digitalWrite(i, LOW); // 輸出低電位,熄滅 LED
delay(200); // 延遲 0.2 秒,創造流動視覺效果
}
// === 第二階段:由左至右依次點亮 (HIGH) ===
for (int i = BASE_PIN; i < BASE_PIN + NUM_LEDS; i++) {
digitalWrite(i, HIGH); // 輸出高電位,點亮 LED
delay(200); // 延遲 0.2 秒
}
}
🔍 程式碼剖析與核心觀念
為什麼程式碼可以寫得這麼精簡?關鍵就在於 for 迴圈 的妙用!
定義變數 (
BASE_PIN與NUM_LEDS):BASE_PIN = 2代表起始腳位。NUM_LEDS = 10代表總共有 10 顆 LED。未來若想改成 5 顆或 8 顆,只需修改這個變數,不必重寫整段程式。
setup()中的迴圈初始化:原本要寫 10 行
pinMode(),利用for (int i = 2; i < 12; i++)就能在數行內一口氣將 Pin 2 到 Pin 11 全部位設定為輸出模式。
loop()中的動態視覺效果:第一個
for迴圈會從 Pin 2 執行到 Pin 11,每隔 0.2 秒熄滅一顆 LED。第二個
for迴圈再從 Pin 2 執行到 Pin 11,每隔 0.2 秒點亮一顆 LED。兩個迴圈不斷重複,就形成宛如流水般生動的跑馬燈效果!
❓ 常見問題與除錯指南 (FAQ)
Q1:為什麼我的跑馬燈跳過了某些 LED 沒有亮?
請檢查該顆 LED 的正負極是否接反。
檢查麵包板上的跳線與電阻是否插緊,或數位腳位號碼是否對應正確。
Q2:如何加快或減慢跑馬燈的流動速度?
只要將
delay(200)中的數值調整即可。數值越小(如delay(50))流動越快,數值越大(如delay(500))流動越慢。
Q3:如何改成一次只亮一顆 LED 的「單燈來回穿梭」效果?
你可以在迴圈內點亮當前 LED (
digitalWrite(i, HIGH)) 後,先delay(200),接著立刻將其熄滅 (digitalWrite(i, LOW)),就能實現單燈移動的效果!
🎯 延伸進階挑戰
掌握了 for 迴圈與多顆 LED 控制後,試著發揮創意修改程式:
雙向來回跑馬燈:設計讓 LED 先從左到右流動,再從右到左倒回去(提示:使用遞減迴圈
for (int i = 11; i >= 2; i--))。呼吸流水燈:結合先前學過的 PWM 功能,讓 LED 流動時帶有漸明漸暗的質感!
📚 相關推薦閱讀

