樂高EV3機器人 - 藍牙控制(雙馬達作為搖桿之比例控制)


上一篇 [樂高EV3機器人 - 藍牙控制(雙觸碰感測器)] 中,機器人藉由兩個觸碰感測器的狀態組合,只有四種動作,無法做到細微的操控。因此我們將EV3的馬達角度變化當成搖桿,這樣就能讓機器人有更多變化了。程式碼請由頁面下方下載,分為 Joystick 與 Car 兩個程式,您需將這兩個程式分別下載到兩台EV3主機上。先來看影片吧。

YouTube 影片


在執行程式之前,您需先將兩台 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 秒左右,因為事實上我們不需要這麼頻繁地發送藍牙訊息,有可能會造成當機。這個數字可以自由調整來取得平衡。
手把的範例,您可隨意設計,拿得順手就好






Car:使用一般雙馬達車體即可。

使用一個無窮迴圈,分別把 right 與 left 接收到的內容指定給 Move Tank 指令的左右馬達轉速即可。







ċ
JoystickBT.ev3
(5k)
曾吉弘,
2014年1月12日 上午8:07
Comments