MBC 測距者 8 路 × micro:bit(MakeCode)

三個步驟用 micro:bit 讀測距者 8 路

在 MakeCode for micro:bit 上,先加入 MBC 擴充,再在「當啟動時」等感應器就緒,最後把讀距離和方向的積木放進「重複無限次」。左邊一步一步做,右邊的積木會跟著長出來;這些積木圖是用 MakeCode 自己的渲染器畫的,跟你在編輯器看到的一樣。右上角可以切到 JavaScript,跟 MakeCode 右上的切換一樣。

MakeCode 免費、免登入,用 Chrome 或 Edge 打開就能寫;程式按「下載」存成 .hex,拖進 micro:bit 就會跑。

1

加入 MBC 擴充、接好線

micro:bit 本來不認得測距者。加入 MBC 擴充後,積木區會多一個「MBC 感應器」分類,測距者的積木都在「測距者」那一組(名字有「8 路」的才是這一款)。先選你的 micro:bit 版本,下面的硬體關卡會跟著換。

你的 micro:bit 是哪一版?(背面有寫 V2 的就是 V2)
  1. 打開 MakeCode,按「新專案」。
  2. 積木區最下面點「進階」→「擴充功能」。
  3. 搜尋框貼上 https://github.com/contactmbcrobot/pxt-mbc-sensors,按 Enter,點 mbc-sensors。
  4. 要中文積木:右上齒輪 →「Language」→ 繁體中文。
2

當啟動時:等感應器就緒

8 顆雷射開機要 2~4 秒才全部準備好。程式一開始先等它:有接好就打勾,沒接好就打叉,馬上知道線有沒有接對。

感應器的 I2C 位址
  1. 從「邏輯」拖「如果…那麼…否則」放進「當啟動時」。
  2. 從「MBC 感應器」→「更多」拖「等位址 … 的裝置就緒,最多 … 毫秒」放進條件,位址選 41(0x29)、填 5000(8 顆雷射要 2~4 秒才準備好)。
  3. 從「基本」拖兩個「顯示 圖示」,一個選打勾、一個選打叉。
  4. 「重複無限次」裡先放「暫停 100 毫秒」。

3

使用讀距離和方向的積木

「MBC 感應器 → 測距者」裡名字有「8 路」的積木是這一款:最近的東西多遠、在哪個方向,哪裡最空曠、正前方多遠、每一顆的距離;「裝置」組是每款 MBC 感應器都有的共用積木。點一個功能,積木和輸出會換成它的範例。

模擬感應器(從上面看,車頭朝上):拖動障礙物,看右邊的輸出怎麼變

模擬畫面是示意:方向和距離用畫面上的位置簡單換算,實際感應器可能差一兩格;公釐值只是公分 × 10。紅色扇形 = 那一路量到東西;灰色扇形 = 讀到 120(那個方向沒有東西)。第 4、5 路都朝正前方。

每顆積木的範例

測距者 8 路的積木和裝置組的積木,每顆都有一組可以照著拼的範例(位址 0x29)。按「試試看」會切到第 3 步,右邊的積木和輸出會換成這個範例。

使用注意

  1. 一定要外接 5 V:8 顆雷射很耗電,不能接 micro:bit 的 3V。外接電源的 GND 要和 micro:bit 的 GND 接在一起。開機後約 2~4 秒 8 顆才全部準備好。
  2. 拔線不會讓程式停:感應器讀不到時,距離和方向積木都回 0(是/否積木回「否」),也不會印任何訊息。小心:0 看起來像「東西貼在正前方」,範例「正前方 < 20 就打叉」拔線時也會打叉。要分清楚就用「位址 … 的裝置就緒?」。「當測距者 8 路 距離小於…」事件只看大於 0 的距離,拔線不會觸發。
  3. 方向:站在車後面往前看,負數 = 左邊、正數 = 右邊、0 = 正前方;第 1 顆在最左邊、第 8 顆在最右邊,第 4、5 顆朝正前方。最近方向 ±8 = 四周都沒東西。
  4. 讀到 120:那個方向沒東西、東西超過 120 公分,或那顆雷射壞了。壞掉的那顆永遠讀 120,會被當成「最空曠」;用「測距者 8 路 第 … 顆正常?」檢查。
  5. 2 路和 8 路都是 0x29:同一組 P19/P20 要一起接,先用「把位址 … 的裝置 改成位址 …」把其中一個改掉,第 2 步再選「改過的位址」。JavaScript 進階:mbc.readValue(41, 0x01) 可以直接讀任何一個 I2C 值(沒接好回 −32768)。