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

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

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

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

1

加入 MBC 擴充、接好線

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

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

當啟動時:等感應器就緒

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

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

3

使用讀距離的積木

「MBC 感應器 → 測距者」裡名字有「2 路」的積木是這一款:左右距離、較近距離、平均距離、雷射正常、靠近時的事件;「裝置」組是每款 MBC 感應器都有的共用積木。點一個功能,積木和輸出會換成它的範例。

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

模擬畫面是示意:距離直接用畫面上障礙物的位置換算,實際雷射會有 1~2 公分的誤差,大約每 0.1 秒才更新一次。120 = 前面沒東西(或超過 120 公分)。

每顆積木的範例

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

使用注意

  1. 拔線不會讓程式停:感應器讀不到時,距離積木回 0(是/否積木回「否」),也不會印任何訊息。小心:0 看起來像「東西貼在前面」,範例「較近距離 < 20 就打叉」拔線時也會打叉。要分清楚就用「位址 … 的裝置就緒?」。「當測距者 2 路 距離小於…」事件只看大於 0 的距離,拔線不會觸發。
  2. 讀到 120 有 4 種可能:前面真的沒東西、東西超過 120 公分、剛開機雷射還沒準備好(約 1~2 秒)、或那顆雷射壞了。用「測距者 2 路 … 感應器正常?」分辨。黑色、亮面、透明的東西比較難量,黑色的東西大約 30~50 公分外就量不到。
  3. 公分和公釐:距離積木的單位選「公分」是 0~120、選「公釐」是 0~1200。平均距離只有公釐版。
  4. 2 路和 8 路都是 0x29:同一組 P19/P20 要一起接,先用「把位址 … 的裝置 改成位址 …」把其中一個改掉,第 2 步再選「改過的位址」。
  5. JavaScript 進階:mbc.readValue(41, 0x01) 可以直接讀任何一個 I2C 值(沒接好回 −32768);編號看產品網站的 I2C 指令參考。