mBot 機器人具有紅外線接收器,按下紅外線遙控器的按鍵,便能遙控mBot機器人。
除了出廠程序的三大功能:A模式-快慢方向控制;B模式- 超音波避障;C模式 - 巡線,
也可以自己撰寫程式,自行定義各種遙控器按鍵的功能。
特別的是mBot的主控板mCore還有紅外線發射器,所以配合紅外線接收器,正好提供mBot機器人的另一種通訊功能。如果你有多台mBot機器人,可以利用紅外線進行通訊,讓mBot機器人合作完成任務。
在mBlock中使用紅外線通訊,有兩個指令:發送與接收

以下兩台mBot機器人,命名為A與B,
A機器人的程式如下:

就是1. 發出聲音提示 2. 等待mCore板上的綠色按鈕按下 3. 發送mBot消息:H
B機器人的程式就是等待接收到的訊息,判斷如果訊息是H,就進行一連串的動作。
程式如下:

上面的程式如果使用連線模式是可以正常運行的,但是為離線膜式的mBot主程式上傳到Arduino時,會出現編譯錯誤。
原因為接收的mBot消息是字串,在Scratch中沒有運算型態的問題,所以可以使用這種較為直覺的『相等運算』。不過一旦轉譯為Arduino 的Sketch,就需要特別注意變數型態的問題。於是編譯時會發生錯誤,一般來說,不同程式語言的轉譯本來就是很不容易的工作,需要注意許多狀況,這些狀況都是特例,若是為了特例修改轉譯功能,有可能無法兼顧,造成其他功能失效。
所以最好的方法就是請改用『擴充』裡面的通訊指令來處理字串問題。

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

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


試試看,按下A機器人的綠色按鈕,B機器人是否立即亮燈發聲?
這就是簡單的紅外線通訊,再想想你能利用紅外線通訊完成mBot大隊接力嗎?
(請參考示範影片 https://goo.gl/photos/SApQMQFX9pu6ZJRf6)
歡迎分享你的看法。
沒有留言:
張貼留言
探奇歡迎大家留言討論!謝謝分享你的意見。