2009-07-19

NXT-G教學:多工應用(馬達同時以不同方向轉動)

有人在奇摩知識發問,如何同時讓兩顆馬達反向旋轉,再分別控制停止。

探奇嘗試將這個問題作一整理。

一般使用NXT-G同時控制BC兩顆馬達,我們都會直接使用Move指令。但是想讓兩顆馬達同時啟動,做相反方向旋轉,就必須分別控制單顆馬達。

可以使用 Move指令,只勾選一顆馬達;也可以使用Motor指令直接控制一顆馬達。

不過這些指令都必須依照順序地完成,往往變成一顆馬達動完,另外一顆才會動作。

或許有人想到,使用Motor指令以角度(或圈數)控制時,可以取消選項:Wait for Completion,但是因為無法控制煞車,馬達無法精準定位。

我們也可以使用比較複雜的方式進行控制達到目的,例如Motor指令選擇Unlimited,再監視角度感應器,等到角度感應器旋轉到我們所需要的值再停止馬達運轉。但是程式會變得比較複雜。

所以『多工』就在這個時候派上用場。

『多工』也就是在同一時間讓兩段以上的程式同時進行。(參考探奇舊文章:NXT-G多工程式測試

下圖就是一個例子:

程式開始執行後,等待壓下觸碰感應器,BC馬達會同時啟動,B馬達正轉一圈,C馬達倒轉兩圈。發出聲音後,B馬達倒轉兩圈,C馬達正轉一圈,再發出聲音。程式結束。




瞭解多工的處理方式後,可以將類似的程式放入判別之中。

但是在Switch指令(或Loop指令)中不容易拉出多工的積木軌道,我們可以藉由展開指令的集線器(Data Hub),幫助拓展Switch的空間,再塞入需要的指令,連接積木軌道。

由於NXT-G在圖控空間處理得不是很好,所以有時會造成程式損毀,不要忘了經常儲存檔案,善用Undo功能,還需要一些時間熟悉,實際試驗看看會比較容易上手喔!



如果有更好的方法,也歡迎提出討論,謝謝!



沒有留言:

張貼留言

探奇歡迎大家留言討論!謝謝分享你的意見。