http://lab.cavedu.com/ev3_tankcontrol <- 程式碼由此下載
上一篇 [樂高EV3機器人 – 藍牙控制(雙觸碰感測器)] 中,機器人藉由兩個觸碰感測器的狀態組合,只有四種動作,無法做到細微的操控。因此我們將EV3的馬達角度變化當成搖桿,這樣就能讓機器人有更多變化了。程式碼請由頁面下方下載,分為 Joystick 與 Car 兩個程式,您需將這兩個程式分別下載到兩台EV3主機上。先來看影片吧。
[youtube=http://youtube.com/watch?v=Lv9cO9EpZv0]
在執行程式之前,您需先將兩台 EV3 主機進行藍牙配對,執行時請先啟動 Car程式,再啟動 Joystick 程式。因為 Car 會被動接收來自 Joystick 的指令。
Handle:
兩個獨立的無窮迴圈,以上面的迴圈來說,是將把手端的左側馬達(B馬達)的角度變化,使用 Messaging 指令以數值形態發送出去。另一個迴圈也是相同的概念。在 Messaging 指令我們還可以設定這個 message 的 title,以上面的迴圈來說就是 [left],下面則是 [right]。這樣一來等於是兩條獨立的線,不會搞混。
請注意進入迴圈之前,我們先將馬達的角度值歸零,這時會以馬達當下的位置為0度。這個好習慣要養成喲,程式才不會把先前的累計角度值直接丟給機器人,這樣就會亂跑啦。
馬達的電力範圍為-100~100,我們是將馬達的角度變化直接指定為馬達電力,也就是說,JoyStick的馬達往前推70度,Car的左輪就會以電力70正轉。下圖中您看到我們有乘以 -1 ,這和您的機器人組裝有關,您說不定無需乘以 -1。
您也可以將角度變化乘以2之後再丟出去,也就是說JoyStick的馬達往後拉25度,Car的左輪就會以電力50反轉。這樣就是比例控制的最基本概念:被控端與控制端呈一個簡單比例關係(y = a * x + b)。
另外由Messaging指令中可看到我們指定的接收端是一台名為「EVA」的EV3主機。
注意:您可以在 loop 後面加一個 Wait 時間,例如等候個 0.3 秒左右,因為事實上我們不需要這麼頻繁地發送藍牙訊息,有可能會造成當機。這個數字可以自由調整來取得平衡。
手把的範例,您可隨意設計,拿得順手就好