2016-09-22

mBot mBlock 教學–兩台mBot 的紅外線通訊


mBot 機器人具有紅外線接收器,按下紅外線遙控器的按鍵,便能遙控mBot機器人。

除了出廠程序的三大功能:A模式-快慢方向控制;B模式- 超音波避障;C模式 - 巡線,
也可以自己撰寫程式,自行定義各種遙控器按鍵的功能。

特別的是mBot的主控板mCore還有紅外線發射器,所以配合紅外線接收器,正好提供mBot機器人的另一種通訊功能。如果你有多台mBot機器人,可以利用紅外線進行通訊,讓mBot機器人合作完成任務。

在mBlock中使用紅外線通訊,有兩個指令:發送與接收

image

以下兩台mBot機器人,命名為A與B,

A機器人的程式如下:

image

就是1. 發出聲音提示 2. 等待mCore板上的綠色按鈕按下 3. 發送mBot消息:H

B機器人的程式就是等待接收到的訊息,判斷如果訊息是H,就進行一連串的動作。

程式如下:

image

上面的程式如果使用連線模式是可以正常運行的,但是為離線膜式的mBot主程式上傳到Arduino時,會出現編譯錯誤。

原因為接收的mBot消息是字串,在Scratch中沒有運算型態的問題,所以可以使用這種較為直覺的『相等運算』。不過一旦轉譯為Arduino 的Sketch,就需要特別注意變數型態的問題。於是編譯時會發生錯誤,一般來說,不同程式語言的轉譯本來就是很不容易的工作,需要注意許多狀況,這些狀況都是特例,若是為了特例修改轉譯功能,有可能無法兼顧,造成其他功能失效。

所以最好的方法就是請改用『擴充』裡面的通訊指令來處理字串問題。

image

將Communication打勾後,在機器人模組的最下方會出現通訊的指令。

image

這個『是否等於』的指令專門用來比較字串內容是否相同,將接收端的程式改為下圖:

image
image

試試看,按下A機器人的綠色按鈕,B機器人是否立即亮燈發聲?

這就是簡單的紅外線通訊,再想想你能利用紅外線通訊完成mBot大隊接力嗎?

(請參考示範影片 https://goo.gl/photos/SApQMQFX9pu6ZJRf6

歡迎分享你的看法。