2017-04-21

mBlock mBot 教學 - mBot 一邊循跡一邊唱歌 (Line Following and Music Play)

每個人天生就是不專心,一直都是多工狀態。一邊吃飯,一邊滑手機,一邊跟人聊天。睡覺時也一樣,耳朵還是在工作。

所以學生上課不專心,我在教課也不專心,總是一心多用:邊寫黑板,邊講話,還要注意時間,以及有沒有同學搗蛋......

走在路上或是開車更需要眼觀四面耳聽八方,這通通是『多工』。

這樣的多工狀態對於一般人來說是稀鬆平常的事。不果如果受到限制,那可就麻煩了。

例如用右手寫文章,還要用同一隻手按鋼琴鍵盤彈奏音樂,這樣勢必會受到影響。不是字寫不好,就是音樂彈得亂七八糟。

mBot機器人也是一樣。

由於mBlock指令的限制,目前播放音調需要固定時間(節拍),在這段蜂鳴器發聲的期間,機器人需要專心處理音效,所以無法同時巡線。

請看影片示範:


為了讓mBot機器人能夠一邊循跡一邊發出聲音,我們需要想個方法克服困難。

下圖是簡單的循跡程式


仔細看就是一直不斷地判別巡線感應器的狀態,對應不同的動作:左右轉彎及直行前進。

一次使用太多播放音調的指令會佔用許多時間,我們將整首樂曲的音調分多次播放,增加一個Music 變數,作為『如果...就...』的判斷依據(指標)。


Music 變數漸進增加,當Music變數大於14時,順便歸零,從頭開始播放音調。 

上面分成兩段副程式,是為了容易閱讀,實際上可以併在一起。

(以執行面來說,多個如果指令一字排開比較沒有效率,不過較為直覺,容易理解。日後可以使用『如果...就...否則』取代。)

下圖是主程式,應用新增積木指令,讓整個主程式簡單易讀。


順便在程式最開頭加上標誌音樂,這樣程式上傳後,mBot重新開機時,都有提示音樂,確認程式正常執行。



這就是簡單的邊走(巡線)邊唱歌程式,歡迎討論!




延伸閱讀: