移動速度不同的燈
這篇文章會介紹使用「函式」積木,搭配「背景執行」、「陣列」、「迴圈」和「點亮」積木,讓 micro:bit 的 LED 燈,能用不同的速度,在同一個畫面中顯示 ( 同一個畫面裡,有些燈移動的比較快,有些則移動的比較慢 )。
積木程式原理
當啟動時,建立一個名為 list 的「二維陣列」,陣列第一層為 y 軸座標,第二層為 x 座標陣列 ( 第一層建立第六個項目,目的為了讓畫面好編輯 )。
如果對於陣列操作 LED 還不熟悉,可以先行閱讀:陣列點燈 ( 顯示圖形 )、陣列點燈 ( 動畫 )
使用「計次迴圈」,次數設定 0~4 次,讀取第一層陣列的第一個項目,並將項目 ( 第二層陣列 ) 裡的項目依序取出,接著使用邏輯判斷,判斷如果項目數值等於 1,就點亮對應座標的 LED,如果不等於 1 則熄滅對應座標的 LED。
完成後,啟動 micro:bit 就會看見第一排的第一顆燈亮起 ( 對照陣列第一排的數字 )。
將點燈的積木放入「無限迴圈」( 設定 true 則重複無限次 ) 裡,每次重複後將陣列最後一個項目,移動到第一個項目,並暫停 100 毫秒再繼續重複。
完成後,啟動 micro:bit,第一排的 LED 就會開始往右移動。
了解控制「一排燈」的動畫原理之後,接下來將透過「函式」,將共同的程式積木獨立出來,再分別套用到另外四排燈,新增一個名為 led 的「函式」,再加入 y ( 第幾排 ) 和 speed ( 速度 ) 兩個「數字」參數。
把重複無限次迴圈,放到 led 函式裡,將 0 全部改成函式參數 y,暫停 100 毫秒改成函式參數 speed。
修改後的 led 函式如下圖:
由於函式裡使用了「無窮迴圈」,所以使用呼叫函式後,會造成函式後方的程式無法執行 ( 除非函式的迴圈結束 ),必須搭配「背景運行」積木,讓五排燈各自呼叫各自的函式。
參考:背景運行
完成後,啟動 micro:bit,就能看到五排 led 都以不同的速度移動。
範例解答
- 範例解答:移動速度不同的燈
延伸練習
如果已經熟悉了移動速度不同的燈的原理,還可以嘗試更多好玩的作法:
嘗試用「函式」的方法,控制參數,讓燈可以往左或往右移動 ( 解答 )。
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~