閃一顆燈
讓一塊板子上的燈亮起來,然後熄掉。 · ⏱ 約 25 分鐘
你會學到三件事
- Arduino 的程式沒有
main,而是 setup 和 loop
- 一支腳位要先說「它是輸出還是輸入」
delay 讓程式停在那裡等
開始之前
⚠️ 這一課要先選板子。 右下角的目標選 Arduino Uno(或你手上那一塊)。
選「Arduino」而不指定板子的話,LED_BUILTIN 這個名字會是未知的,
因為「板子上內建的燈接在哪一支腳」是每塊板子各自不同的事。
Uno 是 13 號腳,ESP32 是 2 號。
這個工具會怎麼跟你說話
⚠️ 這一段講一次就好,後面的課不會再提。
| 你會看到 |
那是在說 |
| 積木上一個琥珀色的虛線框 |
這一塊這次沒有被跑到——是故意的嗎? |
| 按執行前先問你「猜猜看」 |
猜完再揭曉——⚠️ 猜錯比猜對值錢,那是你發現自己想錯的地方 |
| 主控台說「跟這一課要的不一樣」+兩欄比對 |
左邊是你印的,右邊是要的 |
| 題目那一格的「2/3」 |
這一課有三題,你過了兩題 |
🟢 而沒有分數、沒有等級、沒有排名。這個工具只會說那件事怎麼樣了,
不會說你怎麼樣。
🟢 先把編輯器打開,跟著下面一起做。 讀完再打開的話,下面每一段你都得先記起來——而那不是這個工具要你做的事。
到編輯器打開這一課:跟著做
一、兩個特別的函式
每一支 Arduino 程式都長這樣,這兩個框是給你填的:
1void setup() {2}3 4void loop() {5}
Arduino 的程式沒有 main。取而代之的是兩個:
|
什麼時候跑 |
setup() |
開機時跑一次——用來準備 |
loop() |
跑完之後從頭再跑一次,永遠——用來做事 |
void 是上一階段學過的:它不交出任何值。
loop 就是一個永遠不會停的迴圈,而它是別人幫你寫好的。
你只要填裡面那一段。
二、先說這支腳要做什麼
在 setup 裡宣告那支腳是輸出:
1void setup() {2 pinMode(LED_BUILTIN, OUTPUT);3}
pinMode(哪一支腳, 做什麼):
|
意思 |
OUTPUT |
這支腳要送電出去(點燈、轉馬達) |
INPUT |
這支腳要讀進來(按鈕、感測器) |
⚠️ 忘了 pinMode 的話,燈可能微微亮或完全不亮,而程式不會報錯。
這是硬體最麻煩的地方:它不當機,它只是行為不對。
LED_BUILTIN 是板子幫你取好的名字,意思是「板子上那顆內建的燈」。
📋 它在你這塊板子上是幾號腳?——板子規格 查得到,
而那一頁的每一個數字都附著它抄自上游的哪一個檔。
積木盤上這一顆寫著「設定腳位 … 為 …」。
順帶一提:從下一課起,程式碼裡會出現 // 開頭的字
——那是寫給人看的,電腦跑到 // 就跳過那一行剩下的部分。
積木盤上那顆叫「備註」(別的地方也叫它「註解」)。
三、亮、等、暗、等
而底下那兩行在積木上是「把腳位 … 設成 …」。
照著打上這一段,它會一直閃:
1void loop() {2 digitalWrite(LED_BUILTIN, HIGH);3 delay(1000);4 digitalWrite(LED_BUILTIN, LOW);5 delay(1000);6}
|
意思 |
digitalWrite(腳, HIGH) |
送電出去 → 亮 |
digitalWrite(腳, LOW) |
不送電 → 暗 |
delay(1000) |
停在這裡 1000 毫秒(= 1 秒) |
⚠️ 沒有 delay 的話,燈會一秒亮暗幾萬次,看起來就是一直亮著。
不是程式錯了,是快到眼睛跟不上。
loop 跑完最後一行會從第一行重來,所以它會一直閃。
完成的樣子
這一課的參考做法——程式碼每一行的號碼,就印在對應的那塊積木上。
1void setup() {2 pinMode(LED_BUILTIN, OUTPUT);3}4 5void loop() {6 digitalWrite(LED_BUILTIN, HIGH);7 delay(1000);8 digitalWrite(LED_BUILTIN, LOW);9 delay(1000);10}
它們是同一個東西
點一下那塊「等待」積木,程式碼裡 delay(1000); 那一行會亮起來。
再把游標移到 digitalWrite(...),換成另一塊亮。
⚠️ 你不是在學兩種東西。你在看同一支程式的兩種寫法,
而它們永遠是同步的,改哪一邊都算數。
上面那張「同一支程式,兩種看法」就是這件事:
程式碼的每一行都有一個號碼,而那個號碼就印在對應的積木上。
換你了
改成「亮 0.1 秒、暗 0.9 秒」,像心跳那樣。
再試試把兩個 delay 都改成 10,看看會發生什麼。
到編輯器做這一題:練習:改成像心跳那樣(亮 0.1 秒、暗 0.9 秒)
做一個
摩斯電碼的 SOS 是「短短短 長長長 短短短」。用那顆內建燈打出來,中間要看得出斷句。
🔴 這一題沒有裁判,你自己看那顆燈,判斷它是不是 SOS。
⚠️ 短、長、字母之間、字之間,四種間隔你要自己定。定得不好別人看不出來。
打給旁邊的人看,問他認不認得出來。
到編輯器做這一題:做一個:用燈打一次 SOS
這一課你做了什麼
- 你認識了
setup(一次)和 loop(一直)
- 你用
pinMode 說了那支腳要輸出
- 你用
digitalWrite + delay 讓燈閃起來
如果卡住了
| 你看到 |
多半是因為 |
LED_BUILTIN 說沒宣告 |
目標選成「Arduino」了,要選一塊具體的板子 |
| 燈一直亮著不閃 |
delay 太短,或忘了寫 |
| 燈完全不亮 |
setup 裡的 pinMode 漏了 |
| 燈很暗 |
pinMode 漏了——腳位在一個「半吊子」的狀態 |
在編輯器打開這一課 →