EV3 Tutorial(10)紅外線遙控恐龍


這次的主題是來製作紅外線遙控恐龍,成品圖如下:

紅外線遙控恐龍

這隻恐龍可以使用紅外線來遙控它的行進、轉向、後退等動作,目標是有點恐龍的動作姿態,實際來看段影片:

示範影片

你可以下載 Dinosaur.lxf,或者是 線上觀看 組裝過程。

積木組裝的題外話

實際上,在完成上面這隻恐龍之前,有製作了另一款恐龍:

紅外線遙控恐龍

不過它有點不良於行,雖然可以前進,不過走得很不穩定,很容易跌倒,雖然前後設計也花了一兩星期,不過最後還是只能當個幾天「外貌協會」作品,然後將之分屍重新設計了:

紅外線遙控恐龍

當你實際依腦袋中的想法,來創造自己的積木時,組裝、拆開、組裝、拆開 … 這過程本身就會一直重複,實際上在前幾篇文章的積木組裝,也是不斷發生這類情況,說實在的,這個過程遠比完成作品本身有趣,如果你只是照著某個組裝圖建立積木,你不會知道零件之間為什麼是如此結合,只有丟開手冊,才能擁有這樣的過程。

使用紅外線感應器

EV3 的紅外線感應器有三種模式,「近程」模式可用於測量物品接近程度,「訊號」模式可用來偵測紅外線訊號方向、接近程度與是否有訊號,「遠程」模式可偵測紅外線訊號發射器壓下的按鈕組合:

紅外線感應器

紅外線訊號發射器可以設置三個頻道,按鈕組合是以數字表示,值為 011,照例不用強記,圖型化積木上有對應的圖樣:

紅外線感應器

我的設計中,按左上按鈕是恐龍左腳向前,按左下按鈕是向後,按右上按鈕是恐龍右腳向前,按右下按鈕是向後,左上右上按鈕同時按下,左右腳會輪流交替往前。

程式撰寫

在按下按鈕,使得恐龍的左右腳在前進、後退時,我還希望它的尾巴能夠自動擺動,不過按鈕一直按著,尾巴不能一直轉,因此,我設定控制尾巴擺動的馬達,轉動角度不得超過 90 度,EV3 的馬達內建感應器,可以量得馬達轉動角度,因此,我用來設計了 TailLeftTailRight 兩個自訂方塊,只要角度超過 90 就停止馬達:

紅外線遙控恐龍

接下來,設計基本移動的方塊 BaseMovement,也就是按左上按鈕是恐龍左腳向前,按左下按鈕是向後,按右上按鈕是恐龍右腳向前,按右下按鈕是向後,左上右上按鈕同時按下的這個控制:

紅外線遙控恐龍

為什麼我特別設計出這個自訂方塊,並且是直接比對數字?有了這個基本的移動方塊,如果要左右腳會輪流交替往前,就只要對方塊輪流不斷輸入 103 就可以了,假使你要多個左右腳會輪流交替往後,就只要對方塊輪流不斷輸入 204,也就是,想設計任意的連續動作,都可以使用這個自訂方塊。

因為左右腳在動作時,都會有個 0 的輸入值來停止左右腳馬達,而且尾巴會跟著擺動,乾脆設計一個 Moving 方塊好了:

紅外線遙控恐龍

這麼一來,如果要左右腳會輪流交替往前,就只要對方塊輪流不斷輸入 13 就可以了,假使你要多個左右腳會輪流交替往後,就只要對方塊輪流不斷輸入 24,而且都會有尾巴擺動,最後的主程式,只需要加上按鈕組合就可以了:

紅外線遙控恐龍

嗯?這個分支是不是太長了點?是沒錯!不過,這次,我就沒有縮小積木面積了,因為程式不見得比較好閱讀,保留目前的狀態,雖然分支有點長,不過每個分支中只有一個方塊,沒有錯綜複雜的資料線,反而是比較直覺易閱讀的畫面。

後記

說穿了,這隻恐龍也是「外貌協會」成品,因為它實際上是用兩個輪子在行動,只是移動姿態上像個恐龍而已,兩足機器人本身就是個挑戰,因為要留意平衡,EV3 主機本身的重量不輕,如果行動時,其中一腳要真正抬起的話,就會再困難一些,這就留待後續有機會再來談談如何製作了。