Upload
-
View
520
Download
3
Embed Size (px)
DESCRIPTION
Touch Classroom 探奇自然科學教室 NXT 樂高機器人 NXT-G My Block
Citation preview
自製命令方塊(My Block)的設定與使用
探奇自然科學教室 2010.10
這份教材詳細敘述如何在 NXT-G 軟體中創作自製命令方塊。
1 什麼是自製命令方塊
1.1 為何要使用自製命令方塊
2 創造你的第一個自製命令方塊
2.1 設定自製命令方塊
2.2 將自製命令方塊放入程式中
2.3 察看及編輯自製命令方塊
3 在自製命令方塊中使用輸入參數
3.1 什麼是輸入參數
3.2 設定輸入參數的方法
3.3 設計你需要的輸入參數
3.4 變更參數名稱
3.5 多個輸入參數的使用
1 什麼是自製命令方塊(My Block)
NXT-G 的程式用到許多命令方塊,NXT-G 有項特殊功能,讓你能夠自行製作符合
自己需求的命令方塊,這就是自製命令方塊。
1.1 為何要使用自製命令方塊
使用自製命令方塊有下列好處:
� 程式容易閱讀及修改。程式可以簡潔地顯示,不再龐大繁雜,拖垮程式顯
示移動的速度。分成多個小段的程式也比較容易解釋說明。
� 將程式下載到 NXT 主機時,只佔用一個自製命令方塊的記憶體空間,可以
節省記憶體的空間。
� 可以在程式中重複使用,不需要撰寫重複的程式。
2 創造你的第一個自製命令方塊
2.1 設定自製命令方塊
在探奇『NXT 樂高機器人:創意樂趣,隨心所欲』書籍中的第九章,有製
作自製命令方塊的說明,這裡用不同的例子再解釋一次。
我們先寫出一個主程式(MyTutorial),選取想要變成自製命令方塊的命
令,挑選兩個方塊,如下圖:
選擇後,按下工具圖示的 Create My Block:
螢幕會出現一個 My Block Builder 視窗,如下圖:
請在 A 輸入這個 My Block 的名稱(只能使用英文字母和數字),這裡我們
輸入『RunGoBack』;
也可以在 B 輸入這個自製命令方塊的說明(可以輸入中文);最後按下 C
的 Next 按鍵進入下一步。
下圖:請由 A 區域拖拉圖示到 B 區域,可以在 B 區域內編輯圖片,包含位
置移動及放大縮小。也可以用兩個圖示(最好不要超過三個)。最後按下 C 的
Finish 按鍵結束編輯。
你會看到原來選取的命令方塊已經被剛才所創作的自製命令方塊取代。
如果覺得命令方塊的間距太大,將滑鼠游標移到命令方塊前的軌道積木,
滑鼠游標會變成左右箭頭。
按住滑鼠左鍵不放,直接向左拖拉,就可以縮小命令方塊的間距。
2.2 將自製命令方塊放入程式中
這個程式的後面步驟還有用到相同的程式
片段,我們可以用自製命令方塊取代。
首先選擇命令面版下方的 Custom palette,
接著拖拉 My Blocks 的 RunGoBack,就可以將自
製命令方塊放到程式中。
在主程式需要的地方可以重複使用這個自製命令方塊。
2.3 察看及編輯自製命令方塊
如果你想知道任何一個自製命命方塊的內容,可以點擊主程式中的
自製命令方塊,NXT-G 會另外打開一個分頁,標題就是自製命令方塊的名
稱。(這裡的例子是 RunGoBack)
你可以在這個分頁直接修改、增加或刪除命令,只要記得儲存(按下
Save Program),主程式內所有的自製命令方塊內容都會同步變動。
下圖我們增加了一個發聲命令,這時 RunGoBack 自製命令方塊就變
成三個步驟。
其實自製命令方塊就是文字型程式中的副程式,NXT-G 在編譯過程中
會自動以三個步驟的命令,取代 RunGoBack 自製命令方塊。
下圖是實際的主程式。
下圖是使用 My Block 的主程式,比較看看,是不是簡潔多了呢?
3 在自製命令方塊中使用輸入參數
有些場合我們需要針對不同狀況,調整自製命令方塊的條件。例如剛才的
RunGoBack,我們的設定是一秒鐘,如果想改為兩秒鐘,需要重新設定一個新的自
製命令方塊嗎?答案是不需要,只要使用命令方塊的輸入參數就可達到目的。
3.1 什麼是輸入參數
在 NXT-G 中,每一個命令方塊都可以輸入特定參數,改變命令的特性。這些
參數可以在參數區直接設定,也可以利用資料線經由資料集線器送給命令方塊。
自製命令方塊也可以設定『輸入參數』,讓自製命令方塊根據『輸入參數』執
行命令。
3.2 設定輸入參數的方法
設定『輸入參數』必須在一開始製作自製命令方塊時,就將參數設
定好。我們可以將主程式作一些修改。
用一個變數,連接資料線到 Move 指令的 Duration 插頭。在這裡我
們將變數的輸出端(Number1 資料集線器的右邊),分別連到兩個 Move 命
令方塊的 Duration 輸入端(Move 資料集線器的左邊)
這次選取命令方塊時,只要包含資料線。
按下 Create My Block,同時輸入名稱 RefGoBack 跟註解,如下圖:
按下 Next,加入圖示,完成的自製命令方塊 RefGoBack 會出現資料集線器。
除了透過資料線傳送輸入參數,你也可以在下方命令參數區直接鍵入參
數。
最後將自製命令方塊都放入主程式。
兩個自製命令方塊可以分別設定參數,依據參數作不同的動作。
注意:製作命令方塊時,Move 命令的參數已經設定 Seconds,所以從 Duration
送入的資料就是毫秒數(500 就是 0.5 秒)。
3.3 設計你需要的輸入參數
在創造自製命令方塊前,就必須先設計需要的輸入參數。如果事後想改變
輸入參數的數量,就必須重新製作自製命令方塊。努力練習是必要的,當你有
更多經驗時,就能夠隨心所欲地設計輸入參數。
3.4 變更參數名稱
為了讓輸入參數更加容易理解,我們可以更改輸入參數的名稱。
將 Duration 改成『秒數』
修改變更後,不要忘記儲存。在主程式中,需要重新拖拉一個新的自
製命令方塊,這些變更才會有效。
3.5 多個輸入參數的使用
如果想使用更多個輸入參數呢?同樣的,拖拉更多個變數,當作輸入
的資料線來源。下圖有兩個變數,雖然名字相同,不過實際上並沒有影響,
因為我們只是利用他們來製作自製命令方塊。
一個變數是控制行進的秒數,另一個是控制聲音命令的發聲長短。
請同樣選取需要製作自製命令方塊的物件,包含資料線。
按下 Creat My Block:
製作完成後,自製命令方塊的資料集線器,以及參數控制區的項目都
變成兩個。
更改多個變數名稱,把它們中文化,讓輸入參數可以一目了然。
注意各個輸入參數的排列順序並不一定,這是由 NXT-G 自行安排,我
們無法改變排列順序。
使用時可以直接輸入參數,也可以透過資料線傳輸參數,如下圖:
設定方式如下圖:發聲長短 1000ms,走的秒數 1500ms(1.5 秒)