燈光繞圈圈 ( 數字函式 )
這篇文章會介紹如何使用「函式」、「邏輯判斷」、「重複無限次」、「變數」、「點亮」、「加減乘除」等積木,做出計算亮燈數量,並讓燈光在 micro:bit LED 外圍繞圈圈的光線效果。
積木程式原理
有別於「燈光繞圈圈 ( 座標 )」是使用座標的方式繞圈,這邊要建立一個「燈數」的函式來進行繞圈,開始前先定義每個燈的數字,最外圈總共有 16 個燈,從左上開始順時針繞一圈,定義 1~16 的數字。
因為 micro:bit 是以每個 LED 的「座標」來亮燈,所以如果要使用「燈數」,最後仍然必須轉換為座標的方式,轉換公式如下 ( 燈數以 num 表示 ):
燈數 | x | y |
---|---|---|
1~5 | num - 1 | 0 |
6~8 | 4 | num - 5 |
9~13 | 13 - num | 4 |
13~16 | 0 | 17-num |
了解原理後,開始實作程式積木,首先建立一個函式,函式名稱命名為「燈數」,並在函式裡加入一個 num 的變數。
函式建立後,按照之前燈數和 xy 座標的定義,使用邏輯判斷、變數、加減乘除積木,組合成下圖的程式。
最後要進行執行函式點亮 LED 燈的程式:
- 當啟動時,建立一個變數 a,並將 a 設定為 0。
- 在重複無限次積木裡,每次重複時將變數 a 的數值增加 1,並呼叫函式
- 函式根據變數 a 的數值,點亮指定的燈。
- 每次重複暫停 100 毫秒。
完成後,重新啟動 micro:bit,就會看見燈光繞著外圈依序亮起。
如果只要讓單一顆燈亮起,不要所有燈都亮,可以透過修改函式著手,將滑鼠移到函式積木上方,按下右鍵,點選「編輯函式」。
點選上方「布林值」按鈕,替函式增加布林值的參數,並將名稱命名為「亮燈」。
教學參考:函式參數
修改函式積木,在最下方新增邏輯判斷,判斷「如果亮燈等於 true,就點亮這個座標的燈」,「如果亮燈等於 false,就熄滅這個座標的燈」。
最後修改重複無限次積木,加入「呼叫燈數」函式,燈數設定為 a - 1,並將亮燈設為 flase,就能將前一顆燈熄滅,接著放入一個邏輯判斷,判斷如果 a 大於 16,就讓 a 從 1 開始。
完成後,重新啟動 micro:bit,就會看到一顆燈不斷繞著畫面轉圈。
範例解答
範例解答:燈光繞圈圈 ( 數字函式 )
延伸練習
如果已經熟悉了燈光繞圈圈 ( 數字函式 ) 的原理,還可以嘗試更多好玩的作法:
- 嘗試讓 LED 從另外一個方向 ( 逆時針 ) 繞圈圈 ( 解答 )。
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~