EV3 Tutorial(6)主機按鈕操控機器手臂 by caterpillar | CodeData
top

EV3 Tutorial(6)主機按鈕操控機器手臂

分享:

EV3 Tutorial(5)Move Steering 與 Move Tank 馬達控制 << 前情

最近常在 Facebook 上看到 meArm,想說手邊有 EV3,自己來試著組個機器手臂,不過,無論 31313 或 45544 都只有兩個大型馬達與一個中型馬達,因此就暫時設計了三個馬達的機器手臂。

三馬達機器手臂

如果你想要跟著組一台相同的,可以安裝 Lego Digital Designer,然後下載我的 RobotArm.lxf 檔案,或者直接觀看它產生的 組裝步驟網頁,依當中的設計來進行組裝。

EV3 主機控鈕

為了讓家中小朋友能操作玩耍,我使用了 EV3 主機上的按鈕來進行控制,主機上的控鈕有六個,不過,左上角的按鈕保留用來取消程式執行,因此可以用的按鈕是五個:

EV3 主機

每個按鈕被按下時會有個數字作為識別,沒有按鈕被按下時數字是 0,左、中、右分別是 123,上、下分別是 45,實際上不太需要去記憶,因為積木元件上會有圖示表示,例如:

EV3 主機按鈕設定

我將左右按鈕用來控制水平馬達的正反轉,而上下按鈕用來控制垂直馬達正反轉,因為只剩一個中間的按鈕,我設計為按一次可控制馬達正轉,再按一次可以反轉,也就是用來控制夾緊或放鬆兩隻大螯。

按鈕與馬達控制程式

程式本身並不困難,基本上就是分支判斷,先寫個水平馬達控制,測試 OK 後,再加上垂直馬達控制,然後加上兩隻大螯的馬達控制,然後,程式就長成這樣了:

第一版機器手臂控制程式

不用去看程式細節了,我很不滿意,圖型化程式的致命傷,你的程式會一下子填滿整個畫面,一點也不容易閱讀,於是,我獨立地設計水平馬達、垂直馬達與兩隻大螯的馬達控制,使之成為三個自訂 Block:

第二版機器手臂控制程式

當你的流程線分出兩個或多個支線時,表示這些支線會同時執行,這樣子第一層畫面就簡單多了,就是同時執行三個自訂的 Block。

水平馬達的自訂 Block 是:

第二版水平馬達控制程式

很簡單,在每次迴圈中等待左右按鈕之一被按下,接著分支判斷是哪個按鈕,決定正轉或反轉,在按鈕狀態改變(像是放開按鈕)後停止馬達。垂直馬達也是類似:

第二版垂直馬達控制程式

接著是兩隻大螯的馬達控制,使用了變數來控制馬達的正或反轉:

第二版兩隻大螯的馬達控制程式

精簡程式畫面

基本上,到這邊是也差不多可以結束了,只不過我還是不滿意,因為顯然地,每個自訂 Block 中,分支判斷不過就是只為了設定馬達的正負功率,因此,在圖形化程式中,很明顯地,分支中有一模一樣的方塊,只是值不同。

我在想,可不可以不用分支判斷呢?後來兩隻大螯的馬達控制,我重新改成了:

第三版兩隻大螯的馬達控制程式

就方塊佔據的面積上,這個版本顯然減少許多,就目前來說,兩個版本相比,使用了分支判斷的版本比較直覺,不過,若在某些情況下,程式流程或方塊使得畫面混亂而難以閱讀時,使用這邊的版本,輔以註解說明,反而可以收到「一文解千圖」的效果。

類似地,水平馬達的自訂 Block,我也試著改成了:

第三版水平馬達控制程式

這是另一種設計的方向,特別是在狀態多需要多個分支判斷時,改用類似這類的設計,對程式精簡就蠻有用的,垂直馬達的自訂 Block 我改成了:

第三版垂直馬達控制程式

下次,如果又看到滿滿畫面的方塊,或者是一大堆流程線、資料線繞來繞去令人昏頭,或許可以思考一下不同的設計方式!

後續 >> EV3 Tutorial(7)使用顏色感應器實作掃描器

分享:
按讚!加入 CodeData Facebook 粉絲群

相關文章

留言

留言請先。還沒帳號註冊也可以使用FacebookGoogle+登錄留言

熱門論壇文章

熱門技術文章