測距者 8 路 × mBlock 5(MakeBlock 版)
測距者 8 路 MakeBlock 版接在 mBot、Ranger、Orion、MegaPi 的 RJ25 連接埠,用 MBC Pro Sensors 擴展 v2 的積木讀值。擴展安裝與各主板可用連接埠請看 MakeBlock 積木擴展。
SPIKEEV3Arduino I2CmBlockMATRIXmicro:bit
接線
感應器 → mBot 插座片 → 主板 RJ25 連接埠(S1 = 主機送、S2 = 主機收)。UART 38400 8N1。
讀值積木
| 積木 | 傳回 | 編號 | 說明 |
|---|---|---|---|
| 測距者 8 路 連接埠 [埠] 最近距離 cm | 0~120 cm | 01 |
8 顆裡最小的距離 0~120 cm(失效那顆以 120 參與),120 = 四周沒東西 |
| 測距者 8 路 連接埠 [埠] 最近方向 | -8~+8 | 02 |
最近目標在哪個方向:−7(正左)~ +7(正右),0 = 正前方,負 = 左;±8 = 四周沒東西(沿用上次偏向側) |
| 測距者 8 路 連接埠 [埠] 最空曠距離 cm | 0~120 cm | 03 |
8 顆裡最大的距離 0~120 cm(壞掉那顆永遠 120,會被當成最空曠) |
| 測距者 8 路 連接埠 [埠] 最空曠方向 | -7~+7 | 04 |
最遠(最空曠)在哪個方向:−7 ~ +7,0 = 正前方,負 = 左;8 顆全 120 時 = 0 |
| 測距者 8 路 連接埠 [埠] 正前方距離 cm | 0~120 cm | 05 |
第 4、5 顆(兩顆平行朝前)平均 0~120 cm;EV3 模式 3、SPIKE 模式 6 給的是同一個值的 mm;0x22 的 C 是 min(第 4, 第 5 顆) 不是平均(見 10) |
| 測距者 8 路 連接埠 [埠] 最近距離 mm | 0~1200 mm | 06 |
8 顆 mm 的最小值 0~1200(失效那顆以 1200 參與),1200 = 四周沒東西 |
| 測距者 8 路 連接埠 [埠] 初始化位元圖 | 0~255 bit | 07 |
bit0 = 第 1 顆(最左)… bit7 = 第 8 顆,1 = 那顆開機初始化成功(8 顆約 2~4 秒,失敗不重試);255 = 全部好 |
| 測距者 8 路 連接埠 [埠] 故障位元圖 | 0~255 bit | 08 |
bit0 = 第 1 顆 … bit7 = 第 8 顆,1 = 那顆目前失效(I2C 讀失敗或 200 ms 沒更新);失效那顆距離回 120/1200 |
| 測距者 8 路 連接埠 [埠] 正前方距離 mm | 0~1200 mm | 09 |
第 4、5 顆(正前方兩顆)平均,0~1200 mm;1200 = 前面沒東西。cm 版是 05 |
| 測距者 8 路 連接埠 [埠] 第 [1~8] 顆距離 cm | 0~120 cm | 10~17 |
第 1 |
| 測距者 8 路 連接埠 [埠] 第 [1~8] 顆距離 mm | 0~1200 mm | 18~1F |
第 1 |
命令積木
| 積木 | 編號 | 說明 |
|---|---|---|
| 測距者 8 路 連接埠 [埠] 更新全部數值 | FD |
一次讀整張值表進快取(FD 整包);接下來 10 ms 內的讀值積木直接用快取,不再逐一詢問 |
狀態積木
擴展把 F3 各 bit 拆成布林積木:
| bit | 名稱 | 說明 |
|---|---|---|
| b0 | 就緒 (ready) |
8 顆都初始化完(開機約 2~4 秒)、快照開始更新後恆 1 |
| b1 | 任一顆失效 (fault) |
初始化失敗、I2C 讀失敗或 200 ms 沒更新,任一顆就是 1(= 08 ≠ 0 或 07 ≠ 255) |
封包格式(給自己寫解碼器的人)
| 動作 | 格式 |
|---|---|
| 讀一個值 | 主機送 [編號] → 回 [值低][值高][編號^值低^值高] |
| 寫入命令 | 寫入命令 E0~EE:收齊參數後回 [00][00][編號] 再執行;20 ms 內沒收齊就丟棄 |
| 不認得的編號 | [00][80][編號^0x80](= -32768) |
| 整包 FD | 送 [FD] → 回 [AA][19][25 個 int16 小端][xor],xor = AA ^ N ^ 所有資料 byte;內容 = 本頁值表由小到大排(不含共用編號與命令)。擴展用它一次抓全部、10 ms 內的積木直接讀快取。 |
| 共用編號 | F0 裝置 ID、F1 協議版本、F2 韌體版本、F3 狀態旗標 |
本頁依據與假設
本頁由 _build/gen-reference.mjs 從 _build/protocol/tof8.json(單一真相來源,轉錄自 2026-10-21 協定定案)產生。
- 正前方 mm(EV3 模式 3、SPIKE 模式 6 v[1])在定案 §5 沒有獨立 I2C 編號 → 掛在 05 正前方 cm 底下,用 scale:mm 標示,不自己加編號。
- 0x22(使用者 2026-10-21 最終定案):只用一個位址,R~K 由左到右 7 個 cm:第 1、2、3 顆、min(第 4, 第 5)、第 6、7、8 顆;11、12 不放資料;最近距離/方向由主機自己比較。此排法只用在 0x22,EV3/SPIKE不動。
- SPIKE:0/5/7/9 鎖住,1、2、3、4、8 維持不動;模式 6 改 [最近 mm, 正前方 mm, 最近方向 −8
+8](原本 = 第 27 顆兩兩合併);模式 8 v[0] 改 ID|hw[0]<<8。 - 最空曠方向 04 範圍 −7~+7(maxDirection 永遠不會是 0/16,盤點 INO:1086-1088);最近方向 02 ±8 = 沒目標、沿用上次偏向側,開機預設 −8。
- 沒有寫入命令;F8 換位址/EF 重開機用共用的。
- 主對話 2026-10-21:補 09 正前方 mm(定案 §5 只有 05 正前方 cm,但 EV3 模式 3、SPIKE 模式 6 都送 mm,I2C/mBlock 應有同一個值)。
- 積木文字以擴展 v2.0.0 產生器
build_mext.js的表為準;本頁由同一份 JSON 產生。