專題五 藍牙遙控車
5-1學習目標
本章中,我們將學習如何使用訊息傳遞指令連接兩台EV3,一台做遙控器,另一台做遙控車。
5-2簡易線控遙控車
在做藍牙遙控車之前,我們先來做一個簡易版的線控遙控車,順便看一下遙控車的重要元素有哪些吧!
5-2-1 遙控車機構
遙控車的重要元素有兩個:遙控器,以及被搖控的車。在本小節中,我們將兩個觸碰感測器組合起來分別控制車子的兩顆馬達轉動與否,本範例的設定為當連接Port1的觸碰感測器按下時,馬達B會轉動;當連接Port4的觸碰感測器轉動的時候,馬達C會轉動。當您同時按下兩個觸碰感測器時,車子便會直走。注意:兩個觸碰感測器的連接線應選擇長的越方便操縱。
5-2-2 程式撰寫
當您的程式功能越複雜時,寫法就有越多種,以下將介紹其中一種,另一種寫法由您來思考如何寫(可參考本章延伸挑戰第5題的附錄解答)
EasyControlCar1.ev3
STEP 1:在起始指令(Start)後面接一個迴圈指令(Loop),結束條件設定為無限(Unlimited),讓我們後續可以不斷地去偵測按鈕的狀態。
STEP 2:在迴圈中放入一個Switch指令,將選擇條件設定為Port1的觸碰感測器是否被按壓(狀態1)
STEP 3:當Port1觸碰感測器被按壓時(V),讓B馬達狀態為On,馬力為50;當Port1觸碰感測器不為被按壓時(5),讓B馬達狀態為Off。
STEP 4:利用多工的寫法,再拉出一個起始指令(Start),用第二個個起始指令來負責另一組Port4與C馬達關係的程式,重複上面的STEP 1~STEP 3,將Port1改成Port4,馬達B改成馬達C,程式就完成了。
現在,您已經完成了您的簡易版線控遙控車,如果您還有興趣作改裝,也可以改寫成如果沒按觸碰感測器馬達就反轉,或是加上第三個觸碰感測器,設定為按下時車子就停止等等。自由發揮將可能有意想不到的結果。
5-3訊息傳遞指令介紹
接下來我們要進入用藍牙傳遞訊息的教學,這樣我們才可以作出不需要連接線的遙控車。訊息傳遞指令(Messaging)用於在 EV3 主機之間發送藍牙訊息。要發送或接收訊息,必須先通過主機藍牙選單或通過藍牙連接方指令連接 EV3 主機。
訊息傳遞指令(Messaging)有三種模式:發送、接收、比較。右上角的空格為訊息標題,預設為abc。下面由左到右分別為模式選擇、接受訊息的主機名稱、要發送的訊息。訊息值為文字、數字、邏輯。注意:如果未填接收訊息的主機名稱,此訊息將可以被任一主機接收。
5-3-1 訊息指令的三種模式
發送訊息模式下,由左到右分別為模式選擇、接受訊息的主機名稱、要發送的訊息。訊息值可以選擇為文字、數字、邏輯。
接收模式下,通過藍牙從連接的 EV3 主機接收文字、數字或邏輯訊息。接收的訊息輸出在接收了訊息之前爲“否”。可從訊息輸出來得知是否已接收訊息。訊息標題用於接收同標題的訊息。
比較模式下,將接收的訊息與現有值進行比較。由左到右分別為:模式選擇、比較符號、比較的內容、比較結果輸出、接收到的訊息輸出。