Basic Tutorial for Arduino, 入門篇

【Arduino入門教學】第七篇:用 For 迴圈輕鬆實現多顆 LED 跑馬燈/流水燈效果(附電路圖與程式碼)

arduino_led

在日常生活中,我們常在店面招牌、節慶燈飾或舞台效果中看到閃爍流動的 LED 跑馬燈(流水燈)。你是否想過這些炫目的燈光效果是如何實現的呢?

在前幾篇教學中,我們學習了單顆 LED 控制與三色紅綠燈實作。本篇將帶大家進入多 Pin 腳控制的世界,教你運用 for 迴圈(Loop) 技巧,只需短短幾行程式碼,就能輕鬆控制多達 10 顆(甚至更多)LED 燈,打造出動態流暢的跑馬燈燈光秀!

 

🛠️ 實驗所需材料與工具

在開始搭設電路前,請準備以下硬體元件:

  • Arduino Uno R3
  • USB 傳輸線
  • 直插LED
  • 220Ω直插電阻
  • 麵包板
  • 麵包板跳線

🛒 新手備料首選:不想一顆顆找零件?推薦選購 米羅科技-Arduino 程式學習套件組,一次備齊所有常用元件,讓你的 Arduino 學習之路更暢通!

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

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

 

🔌 電路接線說明 (Circuit Wiring)

我們要將 10 顆 LED 的陽極(長腳)依序連接至 Arduino 的 Digital Pin 2 到 Pin 11,陰極(短腳)則分別串接 220Ω 限流電阻連至 GND(接地)

接線對照表:

元件類型連接位置 / Pin 腳Arduino 控制腳位 (Pin)備註說明
第 1~10 顆 LED陽極(長腳)Digital Pin 2 ~ Pin 11依序對應 Pin 2, 3, 4 … 到 11
220Ω 限流電阻10 支(接陰極短腳)GND每顆 LED 的短腳均需經電阻接地

💡 接線小撇步:由於零件較多,建議在麵包板上將所有電阻的另一端統一接到共用負極排(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 迴圈 的妙用!

  1. 定義變數 (BASE_PINNUM_LEDS)

    • BASE_PIN = 2 代表起始腳位。

    • NUM_LEDS = 10 代表總共有 10 顆 LED。未來若想改成 5 顆或 8 顆,只需修改這個變數,不必重寫整段程式。

  2. setup() 中的迴圈初始化

    • 原本要寫 10 行 pinMode(),利用 for (int i = 2; i < 12; i++) 就能在數行內一口氣將 Pin 2 到 Pin 11 全部位設定為輸出模式。

  3. 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 控制後,試著發揮創意修改程式:

  1. 雙向來回跑馬燈:設計讓 LED 先從左到右流動,再從右到左倒回去(提示:使用遞減迴圈 for (int i = 11; i >= 2; i--))。

  2. 呼吸流水燈:結合先前學過的 PWM 功能,讓 LED 流動時帶有漸明漸暗的質感!

 

📚 相關推薦閱讀

 

 

 

 

相關文章