這次的主題是來製作紅外線遙控恐龍,成品圖如下:
這隻恐龍可以使用紅外線來遙控它的行進、轉向、後退等動作,目標是有點恐龍的動作姿態,實際來看段影片:
你可以下載 Dinosaur.lxf,或者是 線上觀看 組裝過程。
積木組裝的題外話
實際上,在完成上面這隻恐龍之前,有製作了另一款恐龍:
不過它有點不良於行,雖然可以前進,不過走得很不穩定,很容易跌倒,雖然前後設計也花了一兩星期,不過最後還是只能當個幾天「外貌協會」作品,然後將之分屍重新設計了:
當你實際依腦袋中的想法,來創造自己的積木時,組裝、拆開、組裝、拆開 … 這過程本身就會一直重複,實際上在前幾篇文章的積木組裝,也是不斷發生這類情況,說實在的,這個過程遠比完成作品本身有趣,如果你只是照著某個組裝圖建立積木,你不會知道零件之間為什麼是如此結合,只有丟開手冊,才能擁有這樣的過程。
使用紅外線感應器
EV3 的紅外線感應器有三種模式,「近程」模式可用於測量物品接近程度,「訊號」模式可用來偵測紅外線訊號方向、接近程度與是否有訊號,「遠程」模式可偵測紅外線訊號發射器壓下的按鈕組合:
紅外線訊號發射器可以設置三個頻道,按鈕組合是以數字表示,值為 0
到 11
,照例不用強記,圖型化積木上有對應的圖樣:
我的設計中,按左上按鈕是恐龍左腳向前,按左下按鈕是向後,按右上按鈕是恐龍右腳向前,按右下按鈕是向後,左上右上按鈕同時按下,左右腳會輪流交替往前。
程式撰寫
在按下按鈕,使得恐龍的左右腳在前進、後退時,我還希望它的尾巴能夠自動擺動,不過按鈕一直按著,尾巴不能一直轉,因此,我設定控制尾巴擺動的馬達,轉動角度不得超過 90
度,EV3 的馬達內建感應器,可以量得馬達轉動角度,因此,我用來設計了 TailLeft
與 TailRight
兩個自訂方塊,只要角度超過 90
就停止馬達:
接下來,設計基本移動的方塊 BaseMovement
,也就是按左上按鈕是恐龍左腳向前,按左下按鈕是向後,按右上按鈕是恐龍右腳向前,按右下按鈕是向後,左上右上按鈕同時按下的這個控制:
為什麼我特別設計出這個自訂方塊,並且是直接比對數字?有了這個基本的移動方塊,如果要左右腳會輪流交替往前,就只要對方塊輪流不斷輸入 1
、0
、3
就可以了,假使你要多個左右腳會輪流交替往後,就只要對方塊輪流不斷輸入 2
、0
、4
,也就是,想設計任意的連續動作,都可以使用這個自訂方塊。
因為左右腳在動作時,都會有個 0
的輸入值來停止左右腳馬達,而且尾巴會跟著擺動,乾脆設計一個 Moving
方塊好了:
這麼一來,如果要左右腳會輪流交替往前,就只要對方塊輪流不斷輸入 1
、3
就可以了,假使你要多個左右腳會輪流交替往後,就只要對方塊輪流不斷輸入 2
、4
,而且都會有尾巴擺動,最後的主程式,只需要加上按鈕組合就可以了:
嗯?這個分支是不是太長了點?是沒錯!不過,這次,我就沒有縮小積木面積了,因為程式不見得比較好閱讀,保留目前的狀態,雖然分支有點長,不過每個分支中只有一個方塊,沒有錯綜複雜的資料線,反而是比較直覺易閱讀的畫面。
後記
說穿了,這隻恐龍也是「外貌協會」成品,因為它實際上是用兩個輪子在行動,只是移動姿態上像個恐龍而已,兩足機器人本身就是個挑戰,因為要留意平衡,EV3 主機本身的重量不輕,如果行動時,其中一腳要真正抬起的話,就會再困難一些,這就留待後續有機會再來談談如何製作了。