循行者 8 路 × micro:bit(MakeCode 擴充)
循行者 8 路通用 I2C 版可以接 BBC micro:bit V1/V2,用 MakeCode 擴充 pxt-mbc-sensors v2 的積木讀值(內部走 MBC I2C 協議 v2)。擴充安裝、硬體注意事項(3.3 V、供電)請看 micro:bit 總覽。
SPIKEEV3Arduino I2CmBlockMATRIXmicro:bit
重要
擴充 v2 尚未上機驗證;積木名稱以發布版為準: https://github.com/contactmbcrobot/pxt-mbc-sensors
接線
| 感應器 | micro:bit |
|---|---|
| SDA(RX) | P20 |
| SCL(TX) | P19 |
| VCC | micro:bit 3V(電池供電時建議外接 5 V) |
| GND | GND |
讀值積木
| 積木 | 傳回 | 編號 | 說明 |
|---|---|---|---|
| 循行者 線位置 | -8~+8 | 01 |
線在哪一路:−8(最左)~+8(最右),0 = 正中間;站在車後往前看,負 = 線在左 |
| 循行者 細位置 | -100~+100 | 02 |
線位置的細分:−100 ~ +100,0 = 正中間,負 = 線在左(與線位置同號) |
| 循行者 線寬 | 0~8 路 | 03 |
壓到線的路數 0~8,0 = 找不到線 |
| 循行者 線段數 | 0~4 | 04 |
看到幾段線:0 丟線、1 一條線、2 以上 = 分岔/十字 |
| 循行者 壓線位元圖 | 0~255 bit | 05 |
bit0 = 第 1 路(最左)… bit7 = 第 8 路,1 = 那一路在線上 |
| 循行者 最後離線方向 | -8~+8 | 06 |
丟線前線最後在哪一側:−8 ~ +8(負 = 左),找回線後維持最後一次 |
| 循行者 門檻 | 1~99 | 07 |
判斷「在線上」的光值門檻 1~99,預設 50;用 E4 改 |
| 循行者 校準次數 | 0~255 次 | 08 |
開機後完成校準的次數(按鈕校準也算) |
| 循行者 第 [1~8] 路光值 | 0~100 | 10~17 |
第 1 |
其他積木(是/否、事件)
| 積木 | 相關的值 |
|---|---|
| 循行者 看到線? | 04 |
| 當循行者 [丟線] | 04 |
| 循行者 第 1 路在線上? | 05 |
| 循行者 校準中? | 08 |
命令積木
| 積木 | 編號 | 說明 |
|---|---|---|
| 循行者 循 [黑] 線 | E0 |
追黑線(預設);存 RAM,重開機回預設 |
| 循行者 循 [白] 線 | E1 |
追白線(F3 b1 = 1);存 RAM,重開機回預設 |
| 循行者 校準 [目前讀值記為黑] | E2 |
把目前讀值記為黑(感應器壓在黑線上),約 50 ms;寫入 EEPROM |
| 循行者 校準 [目前讀值記為白] | E3 |
把目前讀值記為白(感應器壓在白底上),約 50 ms;寫入 EEPROM |
| 循行者 門檻設為 50 | E4 |
二值化門檻 1~99(RAM,重開機回預設 50);SPIKE 參數超出範圍回失敗(狀態 2) |
| 循行者 校準 [自動(來回掃 5 秒)] | E7 |
5 秒內把感應器在黑線與白底上來回掃,取極值當黑白參考(共識 B-12,= v1 的 0x20=0x01);期間 F3 b2 = 1 |
狀態
| bit | 名稱 | 說明 |
|---|---|---|
| b0 | 就緒 (ready) |
恆 1 |
| b1 | 白線模式 (whiteMode) |
1 = 正在追白線 |
| b2 | 校準中 (calibrating) |
E2/E3/E7 執行中;此時拒收新的校準命令 |
| b3 | 丟線 (lost) |
線段數 = 0 |
| b4 | 分岔 (fork) |
線段數 ≥ 2 |
| b5 | 左右反向 (reversed) |
E9 = 1(感應器反裝,左右對調) |
JavaScript 寫法
if (!(mbc.waitReady(0x16, 3000))) {
basic.showIcon(IconNames.No) // 讀不到:檢查接線與電源
}
basic.forever(function () {
basic.showNumber(mbc.linePosition()) // 線位置
basic.pause(100)
})本頁依據與假設
本頁由 _build/gen-reference.mjs 從 _build/protocol/line8.json(單一真相來源,轉錄自 2026-10-21 協定定案)產生。
- B-11:細位置 02 與線位置 01 同號(負 = 左);v1 韌體註解寫反,程式碼同號。
- B-12:E7 五秒動態校準補回(v1 的 0x20=0x01),定案表沒列。
- SPIKE 教育版模式 0 的 byte 8~15 補 0(#65 已改,使用者保留)。
- EV3 模式 4 與模式 2 相同內容;模式 3 改壓線位元圖(#67)。
- mBlock 舊版:MBC_MBLOCK_LEGACY=1 時逐 byte 同 2026-10-21 統一後韌體,0x0B 回 1。
- 擴充內部用
Int16LE讀、寫完編號basic.pause(2)(D5);感應器沒接好時讀值積木回 0、是/否積木回「否」。