測距者 2 路 (TOF2) × SPIKE × 樂高官方 App

互動教學SPIKE

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

這一頁只講 樂高官方 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。

安裝軟體

  1. 教育版:到 LEGO Education 下載頁 安裝 SPIKE App。
  2. 家用版:安裝 LEGO MINDSTORMS Robot Inventor App。
  3. 主機如果刷過 Pybricks,先用 SPIKE App 換回樂高原廠韌體,官方 App 才連得上。

注意

教育版和家用版的讀法不一樣:家用版 App 有些積木的數值被限制在 0 ~ 126,「顏色」最大只到 10。下面的讀值以你用的那一版為準。

讓軟體認得感應器

不用裝擴充、不用裝驅動程式。感應器插上主機,官方 App 會把它當成樂高原廠感應器(多數產品是 SPIKE 顏色感應器),直接拉那個感應器的積木就能讀。

  • 官方積木一次只拿一個數,產品的資料被編碼塞在「顏色」「反射光」「原始紅/綠/藍」這幾格裡,每一格代表什麼看下面的讀值。
  • 打開範例檔:下載 .llsp3(家用版是 .lms)→ 打開 App → 左上「檔案」→「開啟」→ 選檔案。

接線

  1. 用連接線把感應器插在主機的 C 孔(A~F 任一孔都可以,程式裡選同一個孔)。
  2. 接頭有方向性,卡榫朝上,輕輕推進去就好,不要用力硬插。
  3. 主機開機後,感應器上的燈會亮起來。

左右怎麼分

左右以感應器朝前、從背後看為準(左=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 實測通過)。

第一次測試

  1. 主機用 USB 或藍牙連上 App。
  2. 打開本頁的範例 1,按執行。
  3. 用手或場地移動感應器前方的東西,數字跟著變就是接好了。

常見問題

  • 插上去沒反應? 依序檢查:連接線兩端插緊 → 換主機的另一個孔 → 換一條線 → 換另一台主機測試。
  • 不同 App 讀到的數值不一樣? 教育版(黃色主機)和家用版(藍綠色主機)的回傳格式不同,請確認你用的是哪一版,再看對應的讀值。
  • 需要轉接板或驅動程式嗎? 不需要。接頭和通訊協議跟樂高主機孔位相同,插上就會自動辨識。
  • 範例 6 在官方 App 打不開? 標「只有 Pybricks 版」的範例,用的是 2026-10 以後韌體的新模式,官方 App 的積木讀不到。

讀值

官方 App 會把感應器顯示成「顏色感應器」。用「更多感應器」分類裡的顏色、反射光、原始紅/綠/藍積木讀,再照表換算。

左距離 cm leftCm

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

右距離 cm
範圍 意思
0~120 cm 右邊那顆的距離 0~120 cm(右 = 第 1 顆),120 = 前面沒東西/那顆失效
主機 值 積木(更多感應器 → 顏色感應器) 換算
SPIKE Prime(教育版) 右距離 cm 「反射光」 讀到的數
Robot Inventor(玩具版) 右距離 cm 「原始綠」 讀到的數 ÷ 64

韌體備註:App 反射光 = 右、原始綠 = 256×右

左右平均 mm avgMm

左右平均 mm
範圍 意思
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 的積木

範例 1 官方 App 積木

一步一步看懂程式

  1. 一直重複:下面的積木會一直做,直到你按停止。
  2. 讀左距離、右距離:官方 App 是「原始紅 ÷ 256 取整數」和「原始綠 ÷ 256 取整數」,存進兩個「變數」(變數=有名字的盒子,可以放一個數字);MBC 積木網站和 Pybricks 直接有「左雷射距離」「右雷射距離」。
  3. 顯示在螢幕上:把「左距離」「空格」「右距離」接成一串文字,讓螢幕捲動顯示。MBC 積木網站和 Pybricks 也會在電腦畫面印出來。
  4. 等 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 的積木

範例 2 官方 App 積木

一步一步看懂程式

  1. 讀距離:官方 App 讀左、右兩個距離;MBC 積木網站和 Pybricks 直接讀「較近的距離」(左右比較小的那個)。
  2. 如果 太近就…:官方 App 寫成「左 < 20 或 右 < 20」,意思跟「較近的距離 < 20」一樣 → 亮紅燈、嗶一聲。
  3. 否則…:亮綠燈。
  4. 等 0.1 秒再檢查一次。

跑起來應該看到什麼

  • 前面沒東西:綠燈。
  • 手慢慢靠近,到 20 公分以內:紅燈+一直嗶嗶叫。手拿開又變回綠燈。

常見問題

  • 手貼到感應器上反而不叫? → 貼太近(幾公分以內)雷射可能量不到,會讀成 120。這是雷射的特性,留一點距離就好。
  • 想改成 30 公分就叫? → 把「20」改成「30」(官方 App 有兩個 20 都要改)。

範例 3:哪一邊比較近

這個範例會做什麼:主機螢幕用箭頭告訴你東西在哪邊:左邊比較近 → ⬅,右邊比較近 → ➡,兩邊差不多 → ⬆,什麼都沒有 → ✕。

要準備什麼:同範例 1。

怎麼接:測距者 2 路插 C 孔。

下載程式

樂高官方 App
ex03_which_closer.llsp3
🟨 樂高官方 App 的積木

範例 3 官方 App 積木

一步一步看懂程式

  1. 先算 左減右=左距離 減 右距離。左邊比較近時,左距離比較小,所以結果是負的。
  2. 如果 兩邊都是 120 → 顯示 ✕(前面沒東西,要最先檢查)。官方 App 寫成「左 > 119 而且 右 > 119」。
  3. 否則,如果 左減右 < -5 → 左邊近了 5 公分以上 → 左箭頭。
  4. 否則,如果 左減右 > 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 的積木

範例 4 官方 App 積木

一步一步看懂程式

  1. 告訴主機輪子接在哪裡:官方 App 是「set movement motors to E+F」;MBC 積木網站和 Pybricks 是「移動底盤 左輪 E、右輪 F」。
  2. 設定速度:官方 App 速度 30%;另外兩種是每秒 150 mm。
  3. 一直重複:讀距離。
  4. 如果 較近的距離 < 20 → 停車 → 嗶 → 後退 10 公分 → 原地右轉。官方 App 的「右轉」是「以轉向 100 移動 0.5 圈」,樂高標準小車大約轉 90 度。
  5. 否則 → 往前走。

跑起來應該看到什麼:小車往前走,快撞到盒子時停下來、嗶一聲、退一點點、右轉,再繼續往前。

常見問題

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

範例 5 官方 App 積木

一步一步看懂程式(這個範例不是「一直重複」,而是照順序做完 3 步就結束)

  1. 第 1 步:往前開,「等待直到」平均距離 ≤ 20 公分,就停車。官方 App 的平均距離是「原始藍 ÷ 256 取整數」,寫成「< 21」意思一樣。
  2. 第 2 步:轉正。「重複直到」左右只差 1 公分以內:
    • 左減右 < 0(左邊比較近)→ 車頭偏右了 → 往左轉;
    • 否則 → 往右轉。
    • 官方 App 一開始先把「左減右」設成 99,這樣「重複直到」才會至少檢查一次。
  3. 第 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
LINE 詢價選購指南