測距者 2 路 (TOF2) × SPIKE × 樂高官方 App
這一頁只講 樂高官方 App(SPIKE 3、Robot Inventor):在 SPIKE Prime/Robot Inventor 上用它讀測距者 2 路 (TOF2)的安裝步驟、每個值怎麼讀、能用的命令與範例。要換產品、主機或軟體,用上方的切換列。
安裝與設定
你需要
- 感應器:測距者 2 路 (TOF2)(SPIKE 版)。每個平台是不同的出廠版本,EV3 版插在 SPIKE 上不會被認出來。
- 主機:SPIKE Prime(教育版,黃色主機)或 Robot Inventor(家用版,藍綠色主機)。
- 連接線:產品內附的標準連接線,或樂高原廠線。
- 軟體:教育版用 LEGO Education SPIKE App(本站範例是 SPIKE 3);家用版用 LEGO MINDSTORMS Robot Inventor App。
- 主機韌體:樂高原廠韌體就好,不用換 Pybricks。
安裝軟體
- 教育版:到 LEGO Education 下載頁 安裝 SPIKE App。
- 家用版:安裝 LEGO MINDSTORMS Robot Inventor App。
- 主機如果刷過 Pybricks,先用 SPIKE App 換回樂高原廠韌體,官方 App 才連得上。
注意
教育版和家用版的讀法不一樣:家用版 App 有些積木的數值被限制在
0 ~ 126,「顏色」最大只到 10。下面的讀值以你用的那一版為準。
讓軟體認得感應器
不用裝擴充、不用裝驅動程式。感應器插上主機,官方 App 會把它當成樂高原廠感應器(多數產品是 SPIKE 顏色感應器),直接拉那個感應器的積木就能讀。
- 官方積木一次只拿一個數,產品的資料被編碼塞在「顏色」「反射光」「原始紅/綠/藍」這幾格裡,每一格代表什麼看下面的讀值。
- 打開範例檔:下載
.llsp3(家用版是.lms)→ 打開 App → 左上「檔案」→「開啟」→ 選檔案。
接線
- 用連接線把感應器插在主機的 C 孔(A~F 任一孔都可以,程式裡選同一個孔)。
- 接頭有方向性,卡榫朝上,輕輕推進去就好,不要用力硬插。
- 主機開機後,感應器上的燈會亮起來。
左右怎麼分
左右以感應器朝前、從背後看為準(左=J5、右=J3)。 面對感應器看會剛好相反,所以用手測試時,請站到感應器後面、跟它同方向看。範例裡的「左邊比較近」「往左轉」都照這個方向。
教育版和玩具版讀法不一樣(2026-11-03 實機)
SPIKE Prime(教育版,SPIKE App 3):積木與 Python 都實測通過。
- 「顏色」=左距離 cm、「反射光」=右距離 cm;Python
color()=左、reflection()=右。前面沒東西時是 120,App 不會把它截在 10 或 100。 - 「原始紅/綠/藍」÷ 256=左/右/平均 cm。
Robot Inventor(玩具版)積木:讀得到距離,但換算跟教育版不同。
| 積木 | 讀到什麼 | 換算 |
|---|---|---|
| 原始顏色 紅/綠/藍 | 左/右/平均距離 | ÷ 64=cm(0~120);教育版是 ÷ 256 |
| 反射光 | 左距離 cm(0~120) | 直接用;跟教育版相反(教育版 reflection()=右) |
| 環境光 | 左距離 cm | 直接用,最多 100(前面沒東西的 120 會變成 100) |
| 顏色 | 只回 −1 | 不能拿來讀距離 |
Robot Inventor(玩具版)Python:get_rgb_intensity()=(左×256, 右×256, 平均×256, 0),跟教育版的原始紅/綠/藍一樣 ÷ 256(Python 執行時主機改用教育版的讀法)。
注意
LEGO 已在 2026-10-01 停止支援 Robot Inventor App;新專案建議用 SPIKE Prime 或 Pybricks。
下命令
官方 App 送不了命令。要改測距模式(遠距離 200 cm 等)、濾波、更新時間、距離上限,請用 Pybricks+MBC 函式庫(SPIKE Pybricks 實測通過)。
第一次測試
- 主機用 USB 或藍牙連上 App。
- 打開本頁的範例 1,按執行。
- 用手或場地移動感應器前方的東西,數字跟著變就是接好了。
常見問題
- 插上去沒反應? 依序檢查:連接線兩端插緊 → 換主機的另一個孔 → 換一條線 → 換另一台主機測試。
- 不同 App 讀到的數值不一樣? 教育版(黃色主機)和家用版(藍綠色主機)的回傳格式不同,請確認你用的是哪一版,再看對應的讀值。
- 需要轉接板或驅動程式嗎? 不需要。接頭和通訊協議跟樂高主機孔位相同,插上就會自動辨識。
- 範例 6 在官方 App 打不開? 標「只有 Pybricks 版」的範例,用的是 2026-10 以後韌體的新模式,官方 App 的積木讀不到。
讀值
官方 App 會把感應器顯示成「顏色感應器」。用「更多感應器」分類裡的顏色、反射光、原始紅/綠/藍積木讀,再照表換算。
左距離 cm leftCm
| 範圍 | 意思 |
|---|---|
0~120 cm |
左邊那顆的距離 0~120 cm(站在車後往前看,左 = 第 0 顆),120 = 前面沒東西/那顆失效 |
| 主機 | 值 | 積木(更多感應器 → 顏色感應器) | 換算 |
|---|---|---|---|
| SPIKE Prime(教育版) | 左距離 cm | 「顏色」 | 讀到的數 |
| Robot Inventor(玩具版) | 左距離 cm | 「反射光」 | 讀到的數(0~120) |
| Robot Inventor(玩具版) | 左距離 cm | 「原始紅」 | 讀到的數 ÷ 64 |
| Robot Inventor(玩具版) | 左距離 cm | 「環境光」 | 讀到的數(最多 100:前面沒東西時 120 會變成 100) |
韌體備註:16 B = [左, 右, 0, 左, 0, 右, 0, 平均, 0×8]:App 顏色 = 左、原始紅 = 256×左;8 B 原樣(不壓縮)
右距離 cm rightCm
| 範圍 | 意思 |
|---|---|
0~120 cm |
右邊那顆的距離 0~120 cm(右 = 第 1 顆),120 = 前面沒東西/那顆失效 |
| 主機 | 值 | 積木(更多感應器 → 顏色感應器) | 換算 |
|---|---|---|---|
| SPIKE Prime(教育版) | 右距離 cm | 「反射光」 | 讀到的數 |
| Robot Inventor(玩具版) | 右距離 cm | 「原始綠」 | 讀到的數 ÷ 64 |
韌體備註:App 反射光 = 右、原始綠 = 256×右
左右平均 mm avgMm
| 範圍 | 意思 |
|---|---|
0~1200 mm |
(左 mm + 右 mm) / 2,0~1200;跟 EV3 模式 3、SPIKE 模式 6 第 3 個值一致(共識 #8 補上) |
| 主機 | 值 | 積木(更多感應器 → 顏色感應器) | 換算 |
|---|---|---|---|
| SPIKE Prime(教育版) | 左右平均 cm | 「原始藍」 | 讀到的數 ÷ 256 取整數=平均 cm(×10=mm) |
| Robot Inventor(玩具版) | 左右平均 cm | 「原始藍」 | 讀到的數 ÷ 64=平均 cm |
韌體備註:byte7 = (左 cm + 右 cm)>>1;App 原始藍 = 256×平均
這個軟體讀不到:較近距離 cm、左距離 mm、右距離 mm、初始化位元圖、故障位元圖。要用這些值請改用 MBC 積木網站/Pybricks。
範例
範例 1:看見距離
這個範例會做什麼:主機螢幕一直捲動顯示「左距離 右距離」兩個數字(單位公分),例如「40 80」。
要準備什麼
- SPIKE 主機 1 台
- 測距者 2 路 1 個
- 一本書或一個盒子當作「障礙物」
怎麼接:測距者 2 路插 C 孔。
下載程式
| 樂高官方 App |
|---|
| ex01_show_distance.llsp3 |
🟨 樂高官方 App 的積木

一步一步看懂程式
- 一直重複:下面的積木會一直做,直到你按停止。
- 讀左距離、右距離:官方 App 是「原始紅 ÷ 256 取整數」和「原始綠 ÷ 256 取整數」,存進兩個「變數」(變數=有名字的盒子,可以放一個數字);MBC 積木網站和 Pybricks 直接有「左雷射距離」「右雷射距離」。
- 顯示在螢幕上:把「左距離」「空格」「右距離」接成一串文字,讓螢幕捲動顯示。MBC 積木網站和 Pybricks 也會在電腦畫面印出來。
- 等 0.2 秒再讀下一次。
跑起來應該看到什麼
- 前面什麼都沒有:顯示 120 120。
- 把書放在前面 30 公分:兩個數字都變成 30 左右。
- 用手只擋住左邊那顆雷射:第一個數字變小、第二個不變。
重要
請先用這個範例確認左右。 感應器正面朝前、元件面朝上的時候,站在感應器後面、跟它同方向往前看,用手只擋住左邊那顆(J5):應該是第一個數字變小。如果是第二個數字變小,代表你的裝法跟範例相反(例如感應器上下顛倒裝),後面範例的「左」「右」也要跟著對調。
常見問題
- 一直顯示 120 120? → 前面真的沒東西,或東西太遠、是黑色/透明的。拿一本白色的書放在 20 公分前試試。剛開機的 1~2 秒也會是 120。
- 只有一邊一直是 120? → 那顆雷射可能被擋住、髒了或壞了。用 MBC 積木網站的「雷射正常」積木或 Pybricks 的
laser2.is_ok(1)可以檢查。 - 數字一直跳? → 正常,雷射每秒量十幾次,會有 1~2 公分的誤差。
- 官方 App 顯示好幾千的數字? → 忘了「÷ 256 取整數」。
範例 2:太近就嗶
這個範例會做什麼:左右任何一邊有東西小於 20 公分,主機燈變紅色並且嗶嗶叫;沒有就亮綠色。
要準備什麼:同範例 1。
怎麼接:測距者 2 路插 C 孔。
下載程式
| 樂高官方 App |
|---|
| ex02_too_close_beep.llsp3 |
🟨 樂高官方 App 的積木

一步一步看懂程式
- 讀距離:官方 App 讀左、右兩個距離;MBC 積木網站和 Pybricks 直接讀「較近的距離」(左右比較小的那個)。
- 如果 太近就…:官方 App 寫成「左 < 20 或 右 < 20」,意思跟「較近的距離 < 20」一樣 → 亮紅燈、嗶一聲。
- 否則…:亮綠燈。
- 等 0.1 秒再檢查一次。
跑起來應該看到什麼
- 前面沒東西:綠燈。
- 手慢慢靠近,到 20 公分以內:紅燈+一直嗶嗶叫。手拿開又變回綠燈。
常見問題
- 手貼到感應器上反而不叫? → 貼太近(幾公分以內)雷射可能量不到,會讀成 120。這是雷射的特性,留一點距離就好。
- 想改成 30 公分就叫? → 把「20」改成「30」(官方 App 有兩個 20 都要改)。
範例 3:哪一邊比較近
這個範例會做什麼:主機螢幕用箭頭告訴你東西在哪邊:左邊比較近 → ⬅,右邊比較近 → ➡,兩邊差不多 → ⬆,什麼都沒有 → ✕。
要準備什麼:同範例 1。
怎麼接:測距者 2 路插 C 孔。
下載程式
| 樂高官方 App |
|---|
| ex03_which_closer.llsp3 |
🟨 樂高官方 App 的積木

一步一步看懂程式
- 先算 左減右=左距離 減 右距離。左邊比較近時,左距離比較小,所以結果是負的。
- 如果 兩邊都是 120 → 顯示 ✕(前面沒東西,要最先檢查)。官方 App 寫成「左 > 119 而且 右 > 119」。
- 否則,如果 左減右 < -5 → 左邊近了 5 公分以上 → 左箭頭。
- 否則,如果 左減右 > 5 → 右邊近了 5 公分以上 → 右箭頭。
- 都不是(差不到 5 公分)→ 上箭頭,代表東西在正前方。
跑起來應該看到什麼:拿一本書從左邊慢慢移到右邊(距離 30 公分左右),箭頭依序變成 ⬅ → ⬆ → ➡;把書拿走,變成 ✕。
常見問題
- 為什麼要差 5 公分以上才算? → 雷射本身有 1~2 公分的誤差,留一點空間,箭頭才不會一直跳來跳去。
- 箭頭左右相反? → 左右以感應器朝前、從背後看為準(左=J5、右=J3),面對感應器看會剛好相反。從背後看還是相反,就回到範例 1 確認左右,感應器可能裝反了。
- 東西很遠時箭頭亂跳? → 兩顆雷射的光束會越遠越寬、在遠處重疊,所以 50 公分以外很難分左右。這個範例請在 50 公分內玩。
範例 4:前面有東西就後退轉彎
這個範例會做什麼:機器人一直往前走。前面有東西(小於 20 公分)就停車 → 嗶一聲 → 後退 10 公分 → 右轉 90 度,然後繼續走。
要準備什麼
- 範例 1 的東西,再加上
- 兩輪小車(兩顆馬達當輪子)
- 一塊空地,放幾個盒子當障礙物
怎麼接
- 測距者 2 路插 C 孔,裝在車頭、朝正前方,離地至少 5 公分(太低會量到地板)
- 左輪接 E、右輪接 F
下載程式
| 樂高官方 App |
|---|
| ex04_obstacle_back.llsp3 |
🟨 樂高官方 App 的積木

一步一步看懂程式
- 告訴主機輪子接在哪裡:官方 App 是「set movement motors to E+F」;MBC 積木網站和 Pybricks 是「移動底盤 左輪 E、右輪 F」。
- 設定速度:官方 App 速度 30%;另外兩種是每秒 150 mm。
- 一直重複:讀距離。
- 如果 較近的距離 < 20 → 停車 → 嗶 → 後退 10 公分 → 原地右轉。官方 App 的「右轉」是「以轉向 100 移動 0.5 圈」,樂高標準小車大約轉 90 度。
- 否則 → 往前走。
跑起來應該看到什麼:小車往前走,快撞到盒子時停下來、嗶一聲、退一點點、右轉,再繼續往前。
常見問題
- 撞上去才停? → 開太快了,或障礙物是黑色、透明的(量不到)。把速度調低,或把「20」改大一點(例如 25)。
- 轉的角度不到 90 度/轉太多? → 官方 App:改「0.5 圈」那個數字;MBC 積木網站和 Pybricks:改「90」。
- 小車往後退、方向相反? → 馬達的裝法跟樂高標準小車相反。官方 App:請照樂高「標準驅動底盤」的方向裝馬達;MBC 積木網站:「移動底盤」積木裡左右輪的「正轉」方向都換成另一個;Pybricks:左輪改成
Direction.CLOCKWISE、右輪改成Motor(Port.F, Direction.COUNTERCLOCKWISE)。 - 一直原地打轉不前進? → 感應器裝太低,量到地板了。把感應器墊高一點、稍微朝上。
範例 5:開到牆前並把車頭轉正
這個範例會做什麼:機器人往前開到離牆 20 公分停下,再原地慢慢轉,直到左右兩顆雷射量到的距離一樣(差 1 公分以內),代表車頭正對著牆。完成後嗶一聲、螢幕顯示笑臉。比賽時常用這招讓機器人「對正」。
要準備什麼:同範例 4,再加一面牆(或一個大紙箱的平面)。
怎麼接:測距者 2 路插 C 孔、裝在車頭朝前;左輪接 E、右輪接 F。
下載程式
| 樂高官方 App |
|---|
| ex05_square_up.llsp3 |
🟨 樂高官方 App 的積木

一步一步看懂程式(這個範例不是「一直重複」,而是照順序做完 3 步就結束)
- 第 1 步:往前開,「等待直到」平均距離 ≤ 20 公分,就停車。官方 App 的平均距離是「原始藍 ÷ 256 取整數」,寫成「< 21」意思一樣。
- 第 2 步:轉正。「重複直到」左右只差 1 公分以內:
- 左減右 < 0(左邊比較近)→ 車頭偏右了 → 往左轉;
- 否則 → 往右轉。
- 官方 App 一開始先把「左減右」設成 99,這樣「重複直到」才會至少檢查一次。
- 第 3 步:完成:停車、嗶一聲、顯示笑臉。
跑起來應該看到什麼:把小車斜斜地對著牆放好(車頭偏一點點),按執行。小車往前開、停下,左右扭一下轉正,然後嗶一聲。
常見問題
- 一直左右轉、停不下來? → 牆面不平,或「差 1 公分」太嚴格。把「1」改成「2」(官方 App 是把「< 2」改成「< 3」)。
- 轉正的方向反了,越轉越歪? → 左右以感應器朝前、從背後看為準(左=J5、右=J3)。回到範例 1 確認左右;左右相反的話,把「往左轉」「往右轉」對調。
- 斜太多(超過 30 度)就轉不正? → 斜太多時,其中一顆雷射會打到牆外面去(讀到 120)。先把車大致擺正再開始。
- 牆是黑色的? → 黑色牆面雷射量得比較短、比較不準,換成淺色的牆或在牆上貼白紙。
注意
下面這些範例沒有這個軟體的版本:範例 6(進階):用毫米精準停車
其他問題
- 主機認不到感應器? 拔掉重插一次,等 2 秒;換一個孔試試。官方 App 會把它顯示成「顏色感應器」,這是正常的。
- 可以同時用官方 App 和 Pybricks 嗎? 一次只能裝一種韌體:Pybricks 與 MBC 積木網站用 Pybricks 韌體,官方 App 用樂高原廠韌體;隨時可以用 SPIKE App 換回原廠韌體。
還有問題?到 聯絡我們 附上你用的軟體和程式截圖。
下載
本頁依據
- 主機與軟體清單:
_build/guides.json - 值與命令:
_build/protocol/tof2.json(單一真相來源) - 安裝與設定:
_build/guides/software/spike-official.zh.md、_build/guides/product/tof2/spike-official.zh.md - 範例:
sensors/tof2/spike-examples.md