在使用 EV3 的視覺化程式語言進行程式開發時,最先該學會的,應該就是 Block 的自訂,也就是將特定功能的程式自訂為一個積木元件。
我認為這應該先學會的理由基本上有兩個,第一,視覺化程式語言因為使用圖形來代表每個程式元素,程式密度低,很快地,你的環境就會充滿了各式各樣的圖形,在那邊上下左右移動會是件很煩人的事,程式也不好看得懂。第二,雖說 EV3 的視覺化程式語言,是讓不會程式設計的大人、小孩,都可以很快地上手程式開發,不過,要設定的細節還蠻多的,進一步將這些細節封裝起來,留下最直覺的部份,對於一些大人或小小孩來說,會更容易上手。
話說,歐巴馬第一行寫的程式是 moveForward(100);
,那麼,就也來作個 MoveForward 的 Block 吧!現在想要有的功能是可以有個 Block,只要指定 100
,就可以讓你組裝的 EV3 車子前進一百步,步的單位就設定為一個輪子直徑長好了!大家都知道,直徑乘以圓周率是就是圓周長,也就是說,如果讓輪子轉動「360 / 圓周率」的角度,也就是差不多是 114.6
度,就會前進一個輪子直徑長度。
(這邊的車子,就是 EV3 手冊中那台,由兩個輪子與一圈滾珠組成。)
建立自訂 Block
現在請開啟你的 EV3 軟體,在下方綠色積木區,將 Move Steering 拖曳至畫面中,然後執行選單中「Tools/My Block Builder」:
接下來就會進入 My Block Builder 的設定方塊,你可以在「Name:」中為 Block 命名,在下方選取自訂 Block 的圖示,因為現在需要一個參數,可以接受指定的前進步數,因此按一下「+」的圖示:
在出現新的參數圖示之後,你可以切換到「Parameter Setup」選單,設定參數名稱、型態、預設值等,在這邊設定參數名稱為 step
:
接下來,你可以切換至「Parameter Icons」,設定參數的圖示後按下「Finish」:
接下來,會在另一個 Tab 頁面中進行 MoveForward 方塊的編輯,而這個自訂的 Block,會出現在最右邊的藍綠色積木區:
最左邊的灰色方塊就是參數輸入,紅色方塊可以進行 Math 運算,可從紅色積木區找到,目前設定為「X」表示乘法,目前設定為將參數輸入乘以 114.6
,黃色線是資料線(Data Wire),可用來將某個方塊的資料輸出設定為另一方塊的輸入。
右邊的 Move Steering 目前設定為「On for Degrees」,也就是可以指定旋轉角度,在方塊右上角目前設定為「B + C」,因此你的馬達必須使用連接埠 B 與 C,目前 Move Steering 設定為 0
表示不轉彎、功率 25
表示 25%
、角度為紅色方塊輸出、停止方式為 Brake 表示緩停。
基本上,功率越大轉速越快,實際的轉速受到電壓限制,如果想精確一點,可以參考 LEGO® 9V Technic Motors compared characteristics 的資料。
現在可以回到 Program,使用自訂的 Block 來移動個 10
步,存檔之後,下載到 EV3 主機測試看看:
管理自訂的 Block
自訂的 Block,可以在專案屬性的「My Blocks」中察看與管理,像是匯出、匯入等:
在專案中,看到的自訂方塊副檔名是 .ev3p,這是在 .ev3 壓縮檔中的檔名,匯出為共享檔之後,副檔名會是 .ev3s,裏頭可包裝數個 .ev3p。
注意,這跟選單「Tools -> Block Import」不同,選單中的 Block Import,是由來匯入或匯出感應器 Block,不是自訂的 Block,匯入匯出的檔名是 .ev3b。
連接埠的參數指定
如果你想要自訂方塊也可以透過參數指定連接埠,可以如下圖指定最上方「凸」字圖示:
這麼一來,就可以使用數值來指定連接埠:
你可以在自訂 Block 時新增一個參數,然後將該參數使用資料線拉到「凸」圖示的位置,至於數值代表的意義,1
是 A 連接埠、2
是 B 連接埠、3
是 C 連接埠、4
是 D 連接埠,不過,Moving Steering 會使用到兩個馬達啊?B + C 要怎麼指定?很簡單,就是 23
,因此,A + B 就是 12
,C + D 就是 34
囉!