配合 gamer:bit 控制 Omni Wheel 小車

gamer:bit 有6個按鈕 , 我們可以利用 micro:bit makecode 內的 extension 來編程每個按鈕的指令 。

omni wheel 小車除了能前後行駛外 , 還能向左/右什至斜向行駛 ,

因此配合有多個按鈕的 gamer:bit 來控制小車會是其一個控制選擇。

假如你是首次接觸 gamer:bit , 可先看 gamer:bit 簡單教學

所需材料 :

micro:bit x 2

Omni Wheel car model x 1

Robotics board x 1

gamer:bit x 1

編程教學 :

我們將利用 gamer:bit + micro:bit A 以 radio 形式發送訊號至 omni wheel car 的 micro:bit B 上,

micro:bit B 收到訊號後便會啟動 Motor , 以不同方向移動。

gamer:bit 部份(遙控及發送訊號) :

加入 Extension :

Microsoft MakeCode for micro:bit - Google Chrome

按下 「Advanced」然後再按「Extensions」

Microsoft MakeCode for micro:bit - Google Chrome

輸入 「gamer:bit」 , 然後選擇圖片上的「gamer-bit」

設定 radio :

Microsoft MakeCode for micro:bit - Google Chrome

將 radio set group 設為1 (也能是其他數字) , 接收訊號的 micro:bit 亦需為同一組 radio group。

Microsoft MakeCode for micro:bit - Google Chrome

從 gamer:bit 的 extension 取出 「gamer:bit on P0 .... down」 , 這代表按下 gamer:bit 的 P0 按鈕(上制)

radio 便 send number 2 至另一塊 micro:bit , 你也能使用 send string 或其他方法 。

number 的好處是較易處理編程 , 但數字會較容易輸入錯誤 ; string 的好處是可直接發送"right"這樣的文字指令 ,

在編寫輸出的代碼是較不容易發生錯誤 i.e. 接收 "right" 寫成向前行駛 , 但接收 "2" 就需憑自己的判斷編寫代碼

其他接鈕的編程 :

Microsoft MakeCode for micro:bit - Google Chrome

micro:bit A 上的編程 :

Microsoft MakeCode for micro:bit - Google Chrome

由於 gamer:bit 並不支援同時讀下2個Pins i.e. 同時按下 右+上 要發出向右上方行駛這種指令 ,

我們需利用 micro:bit 上的 A , B 制來處理這些情況

micro:bit B Omni Wheel Car :

Microsoft MakeCode for micro:bit - Google Chrome

radio group 一樣設成 1 , 這樣才能收到由 gamer:bit 發送的訊號

Function :

由於 Omni Wheel 小車有很多個移動方向 , 為免讓編程過於累贅 , 我們將利用 function 簡化編程。

function 的作用是組織代碼 ,呼叫重複會用到的代碼 , 並能簡化整個編程方便進行 DEBUG 。

建立 Function :

Microsoft MakeCode for micro:bit - Google Chrome

按下 「 Make a Function」。

Microsoft MakeCode for micro:bit - Google Chrome

輸入 function 的名稱

Microsoft MakeCode for micro:bit - Google Chrome

加入 「 turn off all outputs」至 stop motor 的 function

Microsoft MakeCode for micro:bit - Google Chrome

當 receivedNumber = 0 時 , 便 call Stop Motor 以使小車的所有 Motor 都停下來

向前/向後 :

Microsoft MakeCode for micro:bit - Google Chrome

同樣利用 Function 儲起 on direction 這種繁複的編程 , 然後在 else if receivedNumber 利用 Call function 取代。

這樣 if the else 的編程就會變得簡潔 , 能力較弱的學生在看到編程時也能會得到初步理解。

向右/向左 :

這些都是在上一節學過的編程 , 需要注意的地方只有 receivedNumber 有沒有出錯 ,

以及 gamer:bit 按鍵跟小車做的動作相不相對應。

轉右 (按下 gamer:bit X制)

Microsoft MakeCode for micro:bit - Google Chrome

由於 gamer:bit 的按鈕有限 , 我們只能用 Y 制代表向右,

向左轉彎的部份我們會利用倒車再向右轉來解決。

同時需把 M3+M4 關上 , 不然它們會依照上個指令繼續運行。

向右斜方向前行駛(東北) | 按下 micro:bit A 的 A

Microsoft MakeCode for micro:bit - Google Chrome

由於 gamer:bit 的按鈕有限 , 我們只能用 micro:bit 的A制代表向右斜方向前行駛,

M1+M4 forward 100 同時需把 M2+M3 關上 , 不然它們會依照上個指令繼續運行。

向左斜方向前行駛(西北) | 按下 micro:bit A 的 B

Microsoft MakeCode for micro:bit - Google Chrome

向後斜方的部份由於按鈕有限 , 我們將不會編寫獨立的編程 ,

將利用轉彎改變方向再利使向前斜方行駛解決這個問題。

原地轉動 (同時按下micro:bit的A+B)

Microsoft MakeCode for micro:bit - Google Chrome

整個編程 :

不足之處 :

- gamer:bit 依舊會有按鈕(input)不足的問題

改善方法 :

- 利用文字輸入的模式控制小車