2017-09-02

mBlock 往復運動之演算法程式設計 (Scratch 呼吸燈 Breathing Light)

(這次的文章標題應該比較有學術氣質^_^)

在臉書社團 mBot 機器人 mBlock 教學問答 看到有老師分享呼吸燈程式,探奇邱老師也順便練習不同的呼吸燈程式寫法。

簡單地說,呼吸燈就是燈光漸強,越來越亮,然後漸弱,越來越暗。配合一定的時間漸漸亮滅,好似呼吸一般。

mBot機器人上面有兩顆三色RGB LED燈,利用mBlock指令,可以賦予0-255的數值,0表示關閉熄滅,增大數字表示越來越亮,最大的數值為255,表示LED最亮。

所以呼吸燈就是改變LED燈的數值,從0開始,慢慢增加到255,接著再從255漸漸減少,回到數值為0。

為了讓mBot記住LED燈的數值,並且改變數值。我們需要做一個變數Bright,儲存數值。

在此將數值變化控制在0-100,為了方便測試,我們利用貓熊的Y座標來觀察數值變化,Y座標數值越大,貓熊會移動更高,表示LED燈數值越大,也就是越亮。

只要控制貓熊在一定範圍內來回跳動(往復運動),就能讓mBot機器人上面的LED燈漸亮漸滅。(請自行修改指令控制『設定板載LED燈』的數值)

邱老師整理四種不同方式,請大家參考:

第1種直覺的程式想法如下:做100次增加,再做100次減少。


第2種程式採用『直到< >前都不停重複』的指令:


先一直增加,直到超過100;再一直減少,直到變為零(小於1)


第3種作法,增加一個變數Direction,記住目前是『增加』(1) 還是『減少』(-1),增加減少的設定使用『如果 < >就』指令判斷修改。


第4種作法,增加減少的設定以『Direction乘以-1』做改變 (也可以使用『0減Direction』的方式)


以上四種方式都能讓貓熊逐漸上下移動,修改或增加『控制板載LED』指令,就能展現呼吸燈。

(這種往復運動也可以用在貓熊橫向(X座標變化)移動。)

歡迎大家提出你的想法討論。