第98-7課:用Arduino同5粒LED整走馬燈
走馬燈(又叫「追逐」燈或者「霹靂遊俠」燈)係經典嘅 Arduino 初學者項目之一——而且係有原因嘅。佢教你點樣順序控制多個輸出、點樣計時事件,同埋點樣諗限流電阻,同時仲整到啲睇落好滿足嘅嘢。喺呢個項目入面,你會將五粒 LED 駁去 Arduino,然後寫程式令佢哋逐粒著起,營造出一盞燈沿住成排「行」嘅錯覺。
一旦你明白咗個模式,你就可以喺好多現實世界嘅製作入面重新運用佢:
- 裝飾燈光:用喺層架、相框或者模型嘅追逐邊框。
- 方向指示:用喺道具車或者電動單車嘅順序指揮燈效果。
- 進度或者狀態顯示:一排 LED 隨住過程完成而推進。
- 遊戲同計分板道具:「移動目標」或者等級指示器。
- 教學輔助:數位輸出同計時最清晰嘅示範。
同一個五粒 LED 嘅接線會喺呢個課程嘅其他幾個項目入面重用,所以你喺度砌嘅硬件會變成一個可重用嘅平台。
走馬燈點樣運作
原理同著起單粒 LED 完全一樣——只係重複五次(影片 30:47)。每粒 LED 都透過自己嘅限流電阻駁去自己嘅 Arduino 腳位,而所有電阻都共用一條接地軌。然後個 sketch 會將一個腳位設做 HIGH、等一等、設做 LOW、再等一等,然後去下一個腳位。因為任何時候都只有一粒 LED 著住,對眼就會將個序列睇成移動。
兩個計時數值就係賦予呢個效果特色嘅嘢。著燈時間控制每粒 LED 亮幾耐,而熄燈時間控制下一粒 LED 著之前嘅間隔。短著燈時間配長熄燈時間會產生一粒快速移動嘅光點;長著燈時間配短熄燈時間就會產生更順滑、更連續嘅掃動(影片 35:00)。
硬件同組件
- 1 × Arduino 板(Uno、Nano 或者類似型號)
- 5 × LED(任何顏色;混合顏色會令效果更易睇)
- 5 × 電阻——300 Ω 到 1 kΩ 都好好用
- 1 × 麵包板
- 跳線
- USB 線或者電池組供電
如果你想之後加一個按鈕版本,你仲需要一個瞬時按鈕同兩條額外跳線。
揀電阻值
一粒 LED 嘅順向電壓大約係 2 V,而要達到全亮度就需要大約 10 mA(影片 03:49)。喺 5 V 供電下,電阻必須降壓剩低嘅 3 V。應用歐姆定律,R = V / I = 3 V / 0.01 A = 300 Ω。實際上由 300 Ω 到大約 1 kΩ 都行——電阻越高,LED 越暗,但電路就越安全同越有效率(影片 05:33)。
接線指南
將五粒 LED 插入麵包板,令佢哋嘅陽極(長腳)朝向同一個方向。將每粒陰極(短啲、側邊扁平嘅腳)駁去自己嘅電阻,然後將五個電阻嘅另一端全部駁去一條共用接地軌。之後由每個陽極拉一條跳線去一個 Arduino 腳位。
喺呢個製作入面,LED 會分配到腳位 3、4、5、6 同 7(影片 31:29)。腳位編號喺 sketch 頂部定義,所以如果你想要唔同嘅排列,你只需要改嗰五行。
程式碼解釋
個 sketch 特登整到好簡單,等初學者可以跟到每一行。只有最頂嗰個區塊需要為你自己嘅設定而修改。
const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;
int offTime = 30; // the time each LED waits in the OFF state
int onTime = 100; // the time each LED is ON
腳位定義。五個 const int 行將每粒 LED 對應到一個實體 Arduino 腳位。因為佢哋聲明做 const,所以啲數值之後喺程式入面唔可以改——呢個係一個安全習慣,防止意外重新賦值。如果你將 LED 駁去唔同腳位,喺度改啲數字就得,其他乜都唔使改。
onTime 同 offTime。呢兩個整數係項目入面唯一嘅「行為」變數,亦係你會想試吓玩嘅嘢:
onTime— 每粒 LED 著幾耐(以毫秒計)。數值越大,每一步感覺越慢、越從容。offTime— 一粒 LED 熄咗之後、下一粒著之前嘅停頓。數值越細,啲光行得越快。
試吓 onTime = 200 同 offTime = 200,就會有均勻、中速嘅走馬燈效果;或者 onTime = 30 同 offTime = 30,就會有非常快、幾乎模糊嘅效果(影片 36:06 位置)。
setup() 函式只會執行一次,單純將五個腳位都設做 OUTPUT 模式。loop() 函式就會為每粒 LED 重複同樣嘅四步模式:將腳位設做 HIGH、等 onTime、設做 LOW、等 offTime。當第五粒 LED 完成之後,迴圈就會由第一粒重新開始,產生無盡嘅走動效果。
即時專案同示範
用預設數值嘅話,啲 LED 會以輕鬆嘅節奏沿住一行逐步亮起。上傳將 onTime 同 offTime 設做 200 毫秒嘅程式碼,就會有穩定、均勻嘅行進效果;將兩者都降到 30 毫秒,啲光就會幾乎快到跟唔到咁掠過成行(影片 36:21 位置)。
成功之後可以試吓兩個有用嘅實驗:
- 將 on time 設到短過 off time,就可以造出一個明顯移動嘅光點。
- 將 on time 設到長過 off time,就可以造出柔和、重疊嘅光暈。
同樣嘅五粒 LED 接線會喺下一個專案重用,嗰度會用一個按鈕令啲光一步一步咁推進。嗰個製作喺 第 98-8 課:用按鈕同 LED 整 Arduino 走馬燈 有講解。
如果你想用類比輸入而唔係按鈕嚟驅動呢行 LED,可以睇 第 98-9 課:用 Arduino 整 LED 電壓電平錶,或者用電位器整走馬燈。
更進一步
基本走馬燈成功之後,一個自然嘅下一步就係令啲光來回彈,而唔係由最後一粒 LED 直接跳返第一粒。呢個純粹係程式碼練習 — 唔需要額外硬件 — 而且係練習迴圈同陣列嘅好方法。你亦可以將呢個專案同按鈕版本結合,整一個可以手動推進嘅顯示器。
呢條影片嘅相關專案
- 第 98-1 課:點樣用 Arduino 開關 LED
- 第 98-2 課:點樣用按鈕同 Arduino 開關 LED
- 第 98-3 課:點樣用按鈕同 Arduino 開關切換式 LED
- 第 98-4 課:用 Arduino 令 LED 漸變:亮度控制
- 第 98-5 課:用 Arduino 喺按鈕按下時令燈漸變
- 第 98-6 課:用 Arduino 整蹺蹺板 LED 遊戲
- 第 98-8 課:用按鈕同 LED 整 Arduino 走馬燈
- 第 98-9 課:用 Arduino 整 LED 電壓電平錶,或者用電位器整走馬燈
- 第 98-10 課:Arduino 交通燈
章節
- [00:00] 十個 LED 專案概覽
- [01:22] Arduino 循序漸進課程簡介
- [02:29] 咩係 LED 同點樣辨認佢嘅腳位
- [03:49] 計算限流電阻
- [30:47] 介紹走馬燈專案
- [31:06] 五粒 LED 嘅接線圖
- [32:52] 走馬燈程式碼講解
- [34:39] 示範同更改時間數值
- [36:41] 用按鈕推進燈光(另一段教學)
- [42:25] 用電位器整 LED 電壓條(另一段教學)
- [49:25] Arduino 交通燈(另一段教學)
This code has not been parsed yet. Please return to the admin panel to parse it.
你可能需要嘅嘢
-
亞馬遜SunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
亞馬遜
-
亞馬遜
資源與參考資料
-
文件记录Documentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
文件📁
Arduino 函式庫 (zip)
-
SunFounder 3合1智能車學習套件原始碼
3in1-kit-main-v2.zip12.80 MB
用户手册
-
SunFounder 3合1 Arduino 智能車組裝手冊呢份文件逐步展示 SunFounder 3合1 Arduino 智能車嘅組裝過程
SunFounder_car_assembly_manual.pdf1.20 MB