測距者 8 路 (TOF8) × SPIKE × MBC 積木網站

互動教學SPIKE

第一次用?先跟著互動教學在網頁上做一遍,再照下面的步驟接主機。

這一頁只講 MBC SPIKE 積木網站:在 SPIKE Prime/Robot Inventor 上用它讀測距者 8 路 (TOF8)的安裝步驟、每個值怎麼讀、能用的命令與範例。要換產品、主機或軟體,用上方的切換列。

安裝與設定

你需要

  • 感應器:測距者 8 路 (TOF8)(SPIKE 版)。
  • 主機:SPIKE Prime 或 Robot Inventor。
  • 電腦:用 Chrome 瀏覽器打開網站,不用安裝軟體。
  • 主機韌體:要先換成 Pybricks 韌體(下面第 2 步,網站上就能燒)。

安裝軟體

  1. 打開 MBC SPIKE 積木網站(中文積木,不用安裝)。
  2. 換韌體:上方選單「SPIKE 主機 → 安裝/更新 Pybricks 韌體」,照畫面做,約 3 分鐘。網站燒的是 Pybricks v4.1.0。
  3. 之後想回到樂高官方 App,用 SPIKE App 就能換回樂高原廠韌體。

讓軟體認得感應器

不用裝函式庫:MBC 感應器的積木已經內建在網站裡,每個數值一顆中文積木。

  • 打開範例檔:上方選單「檔案 → 開啟」(或按 Ctrl+O)→ 選下載的 .abp。
  • 積木網站讀得到的資料比官方 App 多(不用自己拆數字),但標「只有 Pybricks 版」的範例 6 用的新模式,積木網站也讀不到。

接線

  1. 用連接線把感應器插在主機的 C 孔(A~F 任一孔都可以,積木裡選同一個孔)。
  2. 接頭卡榫朝上,輕輕推進去。
  3. 主機開機後,感應器上的燈會亮起來。

開機要等 2~4 秒

測距者 8 路不用校準,插上去就能用;開機後要等 2~4 秒讓 8 顆雷射準備好,這段時間全部讀到 120(公分)。程式開頭先等幾秒再讀距離。

第幾路 1 2 3 4 5 6 7 8
朝哪裡 正左邊 左前 60° 左前 30° 正前方 正前方 右前 30° 右前 60° 正右邊

上表是感應器正面朝前、元件面朝上的裝法。手放在機器人左邊,範例 1 應該顯示負的方向;顯示正的代表裝反了,範例裡的「左轉」「右轉」也要對調。

第一次測試

  1. 網站連上主機(主機要是 Pybricks 韌體)。
  2. 開啟本頁的範例 1 的 .abp,按執行。
  3. 數字跟著感應器前方的東西變化,就是接好了。

常見問題

  • 網站連不上主機? 主機還是樂高原廠韌體:先做「安裝軟體」第 2 步換成 Pybricks 韌體。
  • 換回官方 App 後連不上? 主機現在是 Pybricks 韌體:用 SPIKE App 換回樂高原廠韌體。
  • 插上去沒反應? 依序檢查:連接線插緊 → 換孔 → 換線 → 換主機測試。

讀值

主機要先換成 Pybricks 韌體。MBC 積木網站的感應器積木讀的是感應器的模式 9(一次讀完全部數值)。

最近距離 cm nearCm

最近距離 cm
範圍 意思
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

最空曠距離 cm
範圍 意思
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

第 1~8 顆距離 cm
範圍 意思
0~120 cm 第 18 顆各自的距離 0120 cm(第 1 顆正左、第 4、5 顆正前、第 8 顆正右,每顆隔 30°);120 = 那個方向沒東西/那顆失效;編號 10~17

在 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 積木網站的積木

範例 1 MBC 積木網站積木

一步一步看懂程式

  1. 一直重複:下面的積木會一直做,直到你按停止。
  2. 讀最近的距離和方向:MBC 積木網站和 Pybricks 直接有「最近目標距離」「最近目標方向」。 官方 App 要自己做,分 3 段:
    • 讀 8 路:照上面的表,把 5 個積木拆成「第1路」~「第8路」8 個變數。
    • 一路一路比:先假設「最近距離」是 120、「最近第幾路」是 0;然後從第 1 路比到第 8 路,如果這一路比「最近距離」還近,就把它記下來。比完以後,「最近第幾路」就是最近的那一路(都沒東西的話還是 0)。
    • 換成方向:方向=第幾路 × 2 - 9(第 1 路 → -7、第 4 路 → -1、第 5 路 → 1、第 8 路 → 7)。
  3. 如果 沒東西(MBC 積木網站和 Pybricks:最近距離 ≥ 120;官方 App:最近第幾路 = 0)→ 顯示 ✕。
  4. 否則 → 螢幕顯示方向。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 積木網站的積木

範例 2 MBC 積木網站積木

一步一步看懂程式

  1. 讀最近的距離:官方 App 用範例 1 那段「讀 8 路+一路一路比」積木;另外兩種直接讀「最近目標距離」。
  2. 如果 最近距離 < 20 → 紅燈+嗶一聲。
  3. 否則,如果 最近距離 < 50 → 黃燈。
  4. 都不是 → 綠燈。
  5. 等 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 積木網站的積木

範例 3 MBC 積木網站積木

一步一步看懂程式

  1. 告訴主機輪子接在哪裡:官方 App 是「set movement motors to E+F」,速度 20%;MBC 積木網站和 Pybricks 是「移動底盤 左輪 E、右輪 F」。
  2. 讀最近的距離和方向(官方 App 是「最近第幾路」)。
  3. 如果 最近距離 > 60 → 太遠或沒東西 → 停著等。
  4. 否則,如果 東西在左邊(方向 < -1;官方 App:第 1~3 路)→ 原地左轉。
  5. 否則,如果 東西在右邊(方向 > 1;官方 App:第 6~8 路)→ 原地右轉。
  6. 都不是(正前方)→ 停。

跑起來應該看到什麼:手放在機器人左邊,它會轉過來面對你的手;手繞著它慢慢走,它會一直轉頭跟著你。

常見問題

  • 轉過頭、在手的兩邊晃來晃去? → 轉太快了。MBC 積木網站和 Pybricks:把「90」改小(例如 60);官方 App:把速度 20% 改小(例如 15%)。
  • 轉的方向相反、越轉越遠? → 回到範例 1 確認左右;或是馬達裝法相反(看範例 4 的常見問題)。
  • 一直轉不停? → 旁邊的牆、桌腳比你的手還近,它就會去找牆。在空曠的地方玩。

範例 4:避障,往最空曠的地方走

這個範例會做什麼:機器人一直往前走。正前方 30 公分內有東西就停下來,看看哪一邊比較空曠,往那邊轉 45 度,再繼續走。

要準備什麼:同範例 3,再找一塊空地、放幾個盒子當障礙物。

怎麼接:測距者 8 路插 C 孔、裝在車頭;左輪接 E、右輪接 F。

下載程式

MBC 積木網站
ex04_avoid_open_side.abp
🟦 MBC 積木網站的積木

範例 4 MBC 積木網站積木

一步一步看懂程式

  1. 設定輪子和速度:官方 App 速度 30%;另外兩種是每秒 150 mm。
  2. 一直重複:看正前方的第 4 路或第 5 路有沒有小於 30 公分。
  3. 如果 有 → 停車,然後找最空曠的方向:
    • MBC 積木網站和 Pybricks 直接讀「最空曠方向」:負的(左邊比較空)→ 左轉 45 度,否則右轉 45 度。
    • 官方 App 用跟範例 1 一樣的「一路一路比」,只是改成找最遠的那一路:第 1~4 路 → 左轉,第 5~8 路 → 右轉。官方 App 的轉 45 度是「以轉向 -100(或 100)移動 0.25 圈」,樂高標準小車大約轉 45 度。
  4. 否則 → 往前走。

跑起來應該看到什麼:小車往前走,快撞到盒子時停下、往比較空的那邊轉,再繼續走。走到牆角也會一直轉,直到找到出路。

常見問題

  • 撞上去才停? → 太快了,或障礙物是黑色、透明的。把速度調低,或把「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 積木網站的積木

範例 5 MBC 積木網站積木

一步一步看懂程式

  1. 讀手(最近的東西)的距離和方向(官方 App 用範例 1 那段積木)。
  2. 依照距離分 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
LINE 詢價選購指南