Semorphe

呼吸燈

燈不只有亮和暗,還有中間。 · ⏱ 約 25 分鐘

你會學到三件事

  1. analogWrite 可以送出 0 到 255 之間的亮度
  2. 用迴圈掃過那 256 個值,就成了漸亮漸暗
  3. 為什麼它叫 PWM,而它其實還是在開開關關

開始之前

上一課只有兩種狀態:HIGH 和 LOW。

而現實裡你會想要「一半亮」。這一課做這件事。

⚠️ 不是每支腳都可以。 Arduino Uno 上只有 3, 5, 6, 9, 10, 11 這幾支, 就是板子上印著 ~ 的那些。這一課用 9 號腳。

🟢 先把編輯器打開,跟著下面一起做:跟著做

一、0 到 255

亮度用 analogWrite,第二個數字就是亮度:

🔎 這一段是試一下——打了看結果就好,不要留在程式裡。

1analogWrite(9, 128);
9128把類比腳位輸出成1
值 效果
0 全暗(等於 digitalWrite(9, LOW))
255 全亮(等於 digitalWrite(9, HIGH))
128 大約一半

為什麼是 255 不是 100? 因為它是用 8 個位元表示的, 2⁸ = 256 種值,從 0 數到 255。

⚠️ analogWrite 的腳位還是要 pinMode(..., OUTPUT)。

積木盤上這一顆寫著「把類比腳位 … 輸出成 …」。

二、它其實還是在開開關關

板子送不出「一半的電壓」。它做的是極快地開開關關:

全亮   ████████████████
一半   ██  ██  ██  ██
四分之一 █   █   █   █

一秒鐘幾百次,眼睛平均起來就變成「比較暗」。 這叫 PWM(脈寬調變):寬度在變,不是電壓在變。

所以它對 LED 有效(眼睛會平均),對馬達也有效(馬達有慣性), 而對需要真的類比電壓的東西無效。

三、掃過去

用一個 for 把亮度從 0 掃到 255:

1for (int v = 0; v <= 255; v++) {2    analogWrite(9, v);3    delay(5);4}
02559變數v5等待毫秒把類比腳位輸出成計數v從到(含)重複123

從 0 一路加到 255,每一步停 5 毫秒,共 256 × 5 ≈ 1.3 秒漸亮。

那個 for 在積木上是「計數 … 從 … 到 …」, 而 int v = 0 那一格是「建立 … 變數 …」。

再倒過來一次就是漸暗:

for (int v = 255; v >= 0; v--) {

⚠️ 注意這個 for 的三樣東西全都反過來了:起點 255、條件 >= 0、 變動是 v--。三樣要一起反,反漏一樣就會變成無窮迴圈或一次都不跑。

完成的樣子

這一課的參考做法——程式碼每一行的號碼,就印在對應的那塊積木上。

1void setup() {2    pinMode(9, OUTPUT);3}4 5void loop() {6    for (int v = 0; v <= 255; v++) {7        analogWrite(9, v);8        delay(5);9    }10    for (int v = 255; v >= 0; v--) {11        analogWrite(9, v);12        delay(5);13    }14}
9OUTPUT設定腳位為02559變數v5等待毫秒把類比腳位輸出成變數v0≥255int(整數)v=變數v--後置9變數v5等待毫秒把類比腳位輸出成自訂重複:初始;條件;更新執行計數v從到(含)重複定義函式 回傳型別void(無回傳)loop定義函式 回傳型別void(無回傳)setup125671081112

換你了

把 delay(5) 改成 delay(1) 和 delay(20),感覺一下差別。

再試試:只留漸亮那一段,把漸暗刪掉。會看到什麼? (會「漸亮 → 啪一下暗掉 → 漸亮」,因為 loop 跳回開頭時 v 回到 0。)

到編輯器做這一題:練習:把 delay 改成 1 和 20,感覺一下差別

做一個

呼吸燈是亮和暗一樣慢,而心跳不是:它是「咚、咚,停一下」。 用 analogWrite 做出心跳的感覺。

🔴 沒有裁判。判準是你看著它,覺得那像不像心跳。 ⚠️ 提示:亮起來要快、暗下去要慢,而兩下之間的停頓比你想的長。

到編輯器做這一題:做一個:心跳,不是呼吸

這一課你做了什麼

如果卡住了

你看到 多半是因為
只有全亮和全暗 那支腳不支援 PWM。換到有 ~ 記號的腳
完全不亮 pinMode(9, OUTPUT) 漏了
一閃一閃不順 delay 太大。改小一點
漸暗那段跑不動 for 的三樣東西沒有一起反過來
在編輯器打開這一課 →