EV3 Tutorial(4)Block 自訂與管理


在使用 EV3 的視覺化程式語言進行程式開發時,最先該學會的,應該就是 Block 的自訂,也就是將特定功能的程式自訂為一個積木元件。

我認為這應該先學會的理由基本上有兩個,第一,視覺化程式語言因為使用圖形來代表每個程式元素,程式密度低,很快地,你的環境就會充滿了各式各樣的圖形,在那邊上下左右移動會是件很煩人的事,程式也不好看得懂。第二,雖說 EV3 的視覺化程式語言,是讓不會程式設計的大人、小孩,都可以很快地上手程式開發,不過,要設定的細節還蠻多的,進一步將這些細節封裝起來,留下最直覺的部份,對於一些大人或小小孩來說,會更容易上手。

話說,歐巴馬第一行寫的程式是 moveForward(100);,那麼,就也來作個 MoveForward 的 Block 吧!現在想要有的功能是可以有個 Block,只要指定 100,就可以讓你組裝的 EV3 車子前進一百步,步的單位就設定為一個輪子直徑長好了!大家都知道,直徑乘以圓周率是就是圓周長,也就是說,如果讓輪子轉動「360 / 圓周率」的角度,也就是差不多是 114.6 度,就會前進一個輪子直徑長度。

(這邊的車子,就是 EV3 手冊中那台,由兩個輪子與一圈滾珠組成。)

建立自訂 Block

現在請開啟你的 EV3 軟體,在下方綠色積木區,將 Move Steering 拖曳至畫面中,然後執行選單中「Tools/My Block Builder」:

自訂 Block

接下來就會進入 My Block Builder 的設定方塊,你可以在「Name:」中為 Block 命名,在下方選取自訂 Block 的圖示,因為現在需要一個參數,可以接受指定的前進步數,因此按一下「+」的圖示:

My Block Builder

在出現新的參數圖示之後,你可以切換到「Parameter Setup」選單,設定參數名稱、型態、預設值等,在這邊設定參數名稱為 step

My Block Builder

接下來,你可以切換至「Parameter Icons」,設定參數的圖示後按下「Finish」:

My Block Builder

接下來,會在另一個 Tab 頁面中進行 MoveForward 方塊的編輯,而這個自訂的 Block,會出現在最右邊的藍綠色積木區:

自訂 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

自訂的 Block,可以在專案屬性的「My Blocks」中察看與管理,像是匯出、匯入等:

管理自訂的 Block

在專案中,看到的自訂方塊副檔名是 .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 囉!