OLED 文字跑馬燈
這篇教學會使用 MakeCode 編輯 micro:bit 擴充板程式 ( EZ Start Kit+ ),使用文字、陣列、變數、迴圈和函式互相搭配,做出在 OLED 顯示器上顯示文字跑馬燈的效果 ( 單行跑馬燈、多行跑馬燈、多行不同速度跑馬燈 )。
- 操作 EZ Start Kit+ 需要載入對應的擴充積木,請先參考:載入 EZ Start Kit+ 的程式積木。
- 更多資訊:ICShop EZ Start Kit+ 官方網站。
顯示陣列中的文字
文字跑馬燈的原理,就是將「文字拆成陣列,依序顯示陣列的每個項目」,所以第一步需要顯示陣列中的文字,下方的範例,會先將文字根據空字元「""」拆成陣列,接著再將陣列的前 16 個項目組合成新的文字,最後透過 OLED 顯示 ( EZ Start Kit+ 的 OLED 一行最多 16 個字 )。
單行文字跑馬燈
使用「重複判斷 true」積木進行不斷重複的動作,每次重複時除了組合要顯示的文字外,也會將陣列的第一個項目移動到最後,如此一來每次組合就都會是全新的文字 ( 少掉開頭,結尾多一個 ),搭配暫停積木,就可以在 OLED 顯示跑馬燈的文字。
多行文字跑馬燈
要實現多行文字跑馬燈效果,除了可以多次重複單行文字跑馬燈的程式,也可以使用函式來簡化重複的程式碼,新增一個名為 show 的函式,新增一個文字參數 text,以及三個數字參數 speed、x、y ( speed 為跑馬燈速度、xy 為 OLED 顯示位置 )。
將單行跑馬燈的程式放入函式裡,按照下圖將部分固定的文字或數字,改成函式的參數 text、speed、x 和 y。
函式完成後,在啟動時使用不同的變數建立多組文字,使用「不同的重複無限次」積木,呼叫函式,並調整函式的參數。
為什麼要使用不同的重複無限次積木呢?因為函式裡使用了「重複判斷 true」積木,如果按照順序執行函式,會因為這塊積木導致後方的函式無法執行 ( 一直卡在前一個函式的無窮迴圈 ),所以必須使用不同的重複無限次積木避開這個問題。
由於 makecode 在定義變數時,通常是定義為「全域變數」,如果要同時呈現不同的跑馬燈文字,需要切換到 JavaScript 修改程式碼,按照下圖,移除下方紅色匡起來的部分剪下,上方紅色匡起來的部分前方補上 let。
完成後「不要切換回積木」( 因為切換回積木會將修改的程式還原 ),直接將程式燒錄到 micro:bit,就會看見多行跑馬燈的效果 ( 文字不同、速度不同 )。
範例解答
- 範例解答: EZ Start Kit+ OLED 單行文字跑馬燈
- 範例解答: EZ Start Kit+ OLED 多行文字跑馬燈
延伸練習
如果已經熟悉了 EZ Start Kit+ OLED 文字跑馬燈的原理,還可以嘗試更多好玩的作法:
- 修改「單行跑馬燈」程式,加入按鈕開關積木,按下 A 出現一組文字跑馬燈,按下 B 出現另外一組文字跑馬燈 ( 解答 )。
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~