測距者 8 路 (TOF8) × SPIKE × MBC 積木網站
這一頁只講 MBC SPIKE 積木網站:在 SPIKE Prime/Robot Inventor 上用它讀測距者 8 路 (TOF8)的安裝步驟、每個值怎麼讀、能用的命令與範例。要換產品、主機或軟體,用上方的切換列。
安裝與設定
你需要
- 感應器:測距者 8 路 (TOF8)(SPIKE 版)。
- 主機:SPIKE Prime 或 Robot Inventor。
- 電腦:用 Chrome 瀏覽器打開網站,不用安裝軟體。
- 主機韌體:要先換成 Pybricks 韌體(下面第 2 步,網站上就能燒)。
安裝軟體
- 打開 MBC SPIKE 積木網站(中文積木,不用安裝)。
- 換韌體:上方選單「SPIKE 主機 → 安裝/更新 Pybricks 韌體」,照畫面做,約 3 分鐘。網站燒的是 Pybricks v4.1.0。
- 之後想回到樂高官方 App,用 SPIKE App 就能換回樂高原廠韌體。
讓軟體認得感應器
不用裝函式庫:MBC 感應器的積木已經內建在網站裡,每個數值一顆中文積木。
- 打開範例檔:上方選單「檔案 → 開啟」(或按 Ctrl+O)→ 選下載的
.abp。 - 積木網站讀得到的資料比官方 App 多(不用自己拆數字),但標「只有 Pybricks 版」的範例 6 用的新模式,積木網站也讀不到。
接線
- 用連接線把感應器插在主機的 C 孔(A~F 任一孔都可以,積木裡選同一個孔)。
- 接頭卡榫朝上,輕輕推進去。
- 主機開機後,感應器上的燈會亮起來。
開機要等 2~4 秒
測距者 8 路不用校準,插上去就能用;開機後要等 2~4 秒讓 8 顆雷射準備好,這段時間全部讀到 120(公分)。程式開頭先等幾秒再讀距離。
| 第幾路 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 朝哪裡 | 正左邊 | 左前 60° | 左前 30° | 正前方 | 正前方 | 右前 30° | 右前 60° | 正右邊 |
上表是感應器正面朝前、元件面朝上的裝法。手放在機器人左邊,範例 1 應該顯示負的方向;顯示正的代表裝反了,範例裡的「左轉」「右轉」也要對調。
第一次測試
- 網站連上主機(主機要是 Pybricks 韌體)。
- 開啟本頁的範例 1 的
.abp,按執行。 - 數字跟著感應器前方的東西變化,就是接好了。
常見問題
- 網站連不上主機? 主機還是樂高原廠韌體:先做「安裝軟體」第 2 步換成 Pybricks 韌體。
- 換回官方 App 後連不上? 主機現在是 Pybricks 韌體:用 SPIKE App 換回樂高原廠韌體。
- 插上去沒反應? 依序檢查:連接線插緊 → 換孔 → 換線 → 換主機測試。
讀值
主機要先換成 Pybricks 韌體。MBC 積木網站的感應器積木讀的是感應器的模式 9(一次讀完全部數值)。
最近距離 cm nearCm
| 範圍 | 意思 |
|---|---|
0~120 cm |
8 顆裡最小的距離 0~120 cm(失效那顆以 120 參與),120 = 四周沒東西 |
在 MBC 積木網站加入這款感應器的積木,用「最近距離 cm」積木讀;積木在主機上執行的是下面這段 Pybricks 程式(模式 9):
from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port
dev = PUPDevice(Port.A) # 感應器插 A 孔
w = dev.read(9)[4]
nearCm = ((w >> 8) & 0xFF) # 最近距離 cm(高 byte)最近方向 nearDir
| 範圍 | 意思 |
|---|---|
-8~+8 |
最近目標在哪個方向:−7(正左)~ +7(正右),0 = 正前方,負 = 左;±8 = 四周沒東西(沿用上次偏向側) |
在 MBC 積木網站加入這款感應器的積木,用「最近方向」積木讀;積木在主機上執行的是下面這段 Pybricks 程式(模式 9):
from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port
dev = PUPDevice(Port.A) # 感應器插 A 孔
w = dev.read(9)[4]
nearDir = (w & 0xFF) - 8 # 最近方向(低 byte)最空曠距離 cm farCm
| 範圍 | 意思 |
|---|---|
0~120 cm |
8 顆裡最大的距離 0~120 cm(壞掉那顆永遠 120,會被當成最空曠) |
在 MBC 積木網站加入這款感應器的積木,用「最空曠距離 cm」積木讀;積木在主機上執行的是下面這段 Pybricks 程式(模式 9):
from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port
dev = PUPDevice(Port.A) # 感應器插 A 孔
w = dev.read(9)[5]
farCm = ((w >> 8) & 0xFF) # 最空曠距離 cm(高 byte)最空曠方向 farDir
| 範圍 | 意思 |
|---|---|
-7~+7 |
最遠(最空曠)在哪個方向:−7 ~ +7,0 = 正前方,負 = 左;8 顆全 120 時 = 0 |
在 MBC 積木網站加入這款感應器的積木,用「最空曠方向」積木讀;積木在主機上執行的是下面這段 Pybricks 程式(模式 9):
from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port
dev = PUPDevice(Port.A) # 感應器插 A 孔
w = dev.read(9)[5]
farDir = (w & 0xFF) - 8 # 最空曠方向(低 byte)初始化位元圖 initOk
| 範圍 | 意思 |
|---|---|
0~255 bit |
bit0 = 第 1 顆(最左)… bit7 = 第 8 顆,1 = 那顆開機初始化成功(8 顆約 2~4 秒,失敗不重試);255 = 全部好 |
在 MBC 積木網站加入這款感應器的積木,用「初始化位元圖」積木讀;積木在主機上執行的是下面這段 Pybricks 程式(模式 9):
from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port
dev = PUPDevice(Port.A) # 感應器插 A 孔
w = dev.read(9)[6]
initOk = (w & 0xFF) # 初始化位元圖(低 byte)故障位元圖 fault
| 範圍 | 意思 |
|---|---|
0~255 bit |
bit0 = 第 1 顆 … bit7 = 第 8 顆,1 = 那顆目前失效(I2C 讀失敗或 200 ms 沒更新);失效那顆距離回 120/1200 |
在 MBC 積木網站加入這款感應器的積木,用「故障位元圖」積木讀;積木在主機上執行的是下面這段 Pybricks 程式(模式 9):
from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port
dev = PUPDevice(Port.A) # 感應器插 A 孔
w = dev.read(9)[6]
fault = ((w >> 8) & 0xFF) # 故障位元圖(高 byte)第 1~8 顆距離 cm distCm
| 範圍 | 意思 |
|---|---|
0~120 cm |
第 1 |
在 MBC 積木網站加入這款感應器的積木,用「第 1~8 顆距離 cm」積木讀;積木在主機上執行的是下面這段 Pybricks 程式(模式 9):
from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port
dev = PUPDevice(Port.A) # 感應器插 A 孔
words = dev.read(9)[0:4]
distCm = []
for w in words:
distCm.append(w & 0xFF) # 奇數路
distCm.append((w >> 8) & 0xFF) # 偶數路這個軟體讀不到:正前方 cm、最近距離 mm、正前方距離 mm、第 1~8 顆距離 mm。要用這些值請改用 Pybricks。
範例
範例 1:最近的東西在哪個方向
這個範例會做什麼:主機螢幕顯示最近的東西在哪個方向(-7 ~ 7)。手放左邊顯示負的、放正前方顯示 0、放右邊顯示正的;四周都沒東西顯示 ✕。
要準備什麼
- SPIKE 主機 1 台
- 測距者 8 路 1 個
- 你的手(或一本書)
怎麼接:測距者 8 路插 C 孔。
下載程式
| MBC 積木網站 |
|---|
| ex01_nearest_direction.abp |
🟦 MBC 積木網站的積木

一步一步看懂程式
- 一直重複:下面的積木會一直做,直到你按停止。
- 讀最近的距離和方向:MBC 積木網站和 Pybricks 直接有「最近目標距離」「最近目標方向」。
官方 App 要自己做,分 3 段:
- 讀 8 路:照上面的表,把 5 個積木拆成「第1路」~「第8路」8 個變數。
- 一路一路比:先假設「最近距離」是 120、「最近第幾路」是 0;然後從第 1 路比到第 8 路,如果這一路比「最近距離」還近,就把它記下來。比完以後,「最近第幾路」就是最近的那一路(都沒東西的話還是 0)。
- 換成方向:方向=第幾路 × 2 - 9(第 1 路 → -7、第 4 路 → -1、第 5 路 → 1、第 8 路 → 7)。
- 如果 沒東西(MBC 積木網站和 Pybricks:最近距離 ≥ 120;官方 App:最近第幾路 = 0)→ 顯示 ✕。
- 否則 → 螢幕顯示方向。MBC 積木網站和 Pybricks 也會在電腦畫面印出方向和距離。
跑起來應該看到什麼
- 四周沒東西:✕。
- 手放在正左邊 30 公分:**-7;左前方:-5** 或 -3。
- 手放在正前方:0(官方 App 版會是 -1 或 1,因為它只挑一路,第 4、5 路都朝正前方)。
- 手放在右邊:正的數字。
常見問題
- 左右相反? → 你的感應器裝法跟表上相反(例如上下顛倒),後面範例的左右轉也要對調。
- 一直顯示 ✕? → 剛開機要等 2~4 秒;或手太遠(超過 120 公分)、東西是黑色/透明的。
- MBC 積木網站顯示偶數(例如 -6、-2)? → 正常。手剛好在兩路中間、兩路都看到時,方向會取平均。
- 手放哪裡都顯示同一個數字? → 可能有一路壞了或被擋住,一直讀到很小的數字。用 MBC 積木網站的「第 N 路正常」積木或 Pybricks 的
laser8.is_ok(1)~is_ok(8)檢查。
範例 2:有東西靠近就變燈號
這個範例會做什麼:8 個方向任何一個有東西靠近,主機燈號會變:50 公分內亮黃燈,20 公分內亮紅燈並嗶嗶叫,都沒有就亮綠燈。像倒車雷達一樣。
要準備什麼:同範例 1。
怎麼接:測距者 8 路插 C 孔。
下載程式
| MBC 積木網站 |
|---|
| ex02_near_light.abp |
🟦 MBC 積木網站的積木

一步一步看懂程式
- 讀最近的距離:官方 App 用範例 1 那段「讀 8 路+一路一路比」積木;另外兩種直接讀「最近目標距離」。
- 如果 最近距離 < 20 → 紅燈+嗶一聲。
- 否則,如果 最近距離 < 50 → 黃燈。
- 都不是 → 綠燈。
- 等 0.1 秒再檢查一次。
跑起來應該看到什麼:手從遠處慢慢靠近,燈號從綠 → 黃 → 紅(嗶嗶叫)。手從左邊、右邊靠近也一樣會變。
常見問題
- 為什麼要先檢查 < 20,再檢查 < 50? → 15 公分同時也「小於 50」。如果先檢查 < 50,就永遠不會亮紅燈了。條件要從最嚴格的開始寫。
- 手貼到感應器上反而變綠燈? → 貼太近(幾公分以內)雷射可能量不到,會讀成 120。留一點距離就好。
- 放在桌上一直是黃燈? → 側邊那幾路量到了桌上的其他東西,或感應器裝太低量到桌面。
範例 3:轉頭朝向最近的東西
這個範例會做什麼:機器人原地轉,讓車頭對準最近的東西(60 公分內)。手在左邊就往左轉、在右邊就往右轉,對準了就停。
要準備什麼
- 範例 1 的東西,再加上
- 兩輪小車(兩顆馬達當輪子)
怎麼接
- 測距者 8 路插 C 孔,裝在車頭,第 4、5 路朝正前方,離地至少 5 公分
- 左輪接 E、右輪接 F
下載程式
| MBC 積木網站 |
|---|
| ex03_turn_to_nearest.abp |
🟦 MBC 積木網站的積木

一步一步看懂程式
- 告訴主機輪子接在哪裡:官方 App 是「set movement motors to E+F」,速度 20%;MBC 積木網站和 Pybricks 是「移動底盤 左輪 E、右輪 F」。
- 讀最近的距離和方向(官方 App 是「最近第幾路」)。
- 如果 最近距離 > 60 → 太遠或沒東西 → 停著等。
- 否則,如果 東西在左邊(方向 < -1;官方 App:第 1~3 路)→ 原地左轉。
- 否則,如果 東西在右邊(方向 > 1;官方 App:第 6~8 路)→ 原地右轉。
- 都不是(正前方)→ 停。
跑起來應該看到什麼:手放在機器人左邊,它會轉過來面對你的手;手繞著它慢慢走,它會一直轉頭跟著你。
常見問題
- 轉過頭、在手的兩邊晃來晃去? → 轉太快了。MBC 積木網站和 Pybricks:把「90」改小(例如 60);官方 App:把速度 20% 改小(例如 15%)。
- 轉的方向相反、越轉越遠? → 回到範例 1 確認左右;或是馬達裝法相反(看範例 4 的常見問題)。
- 一直轉不停? → 旁邊的牆、桌腳比你的手還近,它就會去找牆。在空曠的地方玩。
範例 4:避障,往最空曠的地方走
這個範例會做什麼:機器人一直往前走。正前方 30 公分內有東西就停下來,看看哪一邊比較空曠,往那邊轉 45 度,再繼續走。
要準備什麼:同範例 3,再找一塊空地、放幾個盒子當障礙物。
怎麼接:測距者 8 路插 C 孔、裝在車頭;左輪接 E、右輪接 F。
下載程式
| MBC 積木網站 |
|---|
| ex04_avoid_open_side.abp |
🟦 MBC 積木網站的積木

一步一步看懂程式
- 設定輪子和速度:官方 App 速度 30%;另外兩種是每秒 150 mm。
- 一直重複:看正前方的第 4 路或第 5 路有沒有小於 30 公分。
- 如果 有 → 停車,然後找最空曠的方向:
- MBC 積木網站和 Pybricks 直接讀「最空曠方向」:負的(左邊比較空)→ 左轉 45 度,否則右轉 45 度。
- 官方 App 用跟範例 1 一樣的「一路一路比」,只是改成找最遠的那一路:第 1~4 路 → 左轉,第 5~8 路 → 右轉。官方 App 的轉 45 度是「以轉向 -100(或 100)移動 0.25 圈」,樂高標準小車大約轉 45 度。
- 否則 → 往前走。
跑起來應該看到什麼:小車往前走,快撞到盒子時停下、往比較空的那邊轉,再繼續走。走到牆角也會一直轉,直到找到出路。
常見問題
- 撞上去才停? → 太快了,或障礙物是黑色、透明的。把速度調低,或把「30」改大。
- 擦到旁邊的東西? → 這個範例只看正前方兩路。想更安全,可以把第 3、6 路也加進「或」裡面一起檢查。
- 轉的方向跟空曠的那邊相反? → 回到範例 1 確認左右;左右相反的話,把左轉、右轉對調。
- 小車往後退、方向相反? → 馬達的裝法跟樂高標準小車相反。官方 App:請照樂高「標準驅動底盤」的方向裝馬達;MBC 積木網站:「移動底盤」積木裡左右輪的「正轉」方向都換成另一個;Pybricks:左輪改成
Direction.CLOCKWISE、右輪改成Motor(Port.F, Direction.COUNTERCLOCKWISE)。 - 某一路壞了會怎樣? → 壞掉的那一路一直讀 120,會被當成「最空曠」,機器人可能往障礙物轉。用範例 1 的常見問題檢查每一路。
範例 5:跟著手走
這個範例會做什麼:機器人跟著你的手走,並且保持 15~25 公分的距離:手在遠一點(25~60 公分)就一邊往前走、一邊轉向手;剛剛好就停;太近(小於 15 公分)就後退;手拿走(超過 60 公分)就停。
要準備什麼:同範例 3。
怎麼接:測距者 8 路插 C 孔、裝在車頭;左輪接 E、右輪接 F。
下載程式
| MBC 積木網站 |
|---|
| ex05_follow_hand.abp |
🟦 MBC 積木網站的積木

一步一步看懂程式
- 讀手(最近的東西)的距離和方向(官方 App 用範例 1 那段積木)。
- 依照距離分 4 種情況,從上往下檢查:
- > 60 公分 → 看不到手 → 停。
- < 15 公分 → 太近 → 後退(MBC 積木網站和 Pybricks:每秒 80 mm)。
- > 25 公分 → 有點遠 → 往前走,並且手偏多少就轉多少:MBC 積木網站和 Pybricks 每秒轉「方向 × 15」度;官方 App 的轉向是「方向 × 10」(方向一樣是第幾路 × 2 - 9)。
- 剩下的(15~25 公分) → 剛剛好 → 停。
跑起來應該看到什麼:手放在機器人前面 40 公分,它會往前走;手往左移,它會邊走邊左轉;手停住,它也在 20 公分左右停下來;手往前推,它會往後退。
常見問題
- 一直前後抖動? → 「剛剛好」的範圍太窄。把 15 改成 12、25 改成 30。
- 轉彎太猛/太慢? → 改「× 15」(官方 App 是「× 10」)那個數字:大一點轉得快、小一點轉得慢。
- 跟著牆走,不跟手? → 旁邊的東西比你的手還近。在空曠的地方玩,手要是最近的東西。
- 官方 App 版不會後退? → 請確認「start moving(開始移動)」積木的方向是「往後」的箭頭。
注意
下面這些範例沒有這個軟體的版本:範例 6(進階):最近的東西有幾毫米
其他問題
- 主機認不到感應器? 拔掉重插一次,等 2 秒;換一個孔試試。官方 App 會把它顯示成「顏色感應器」,這是正常的。
- 可以同時用官方 App 和 Pybricks 嗎? 一次只能裝一種韌體:Pybricks 與 MBC 積木網站用 Pybricks 韌體,官方 App 用樂高原廠韌體;隨時可以用 SPIKE App 換回原廠韌體。
還有問題?到 聯絡我們 附上你用的軟體和程式截圖。
下載
本頁依據
- 主機與軟體清單:
_build/guides.json - 值與命令:
_build/protocol/tof8.json(單一真相來源) - 安裝與設定:
_build/guides/software/spike-mbcblocks.zh.md、_build/guides/product/tof8/spike-mbcblocks.zh.md - 範例:
sensors/tof8/spike-examples.md