循行者 16 路 (Line16) × SPIKE × 樂高官方 App

互動教學SPIKE

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

這一頁只講 樂高官方 App(SPIKE 3、Robot Inventor):在 SPIKE Prime/Robot Inventor 上用它讀循行者 16 路 (Line16)的安裝步驟、每個值怎麼讀、能用的命令與範例。要換產品、主機或軟體,用上方的切換列。

安裝與設定

你需要

  • 感應器:循行者 16 路 (Line16)(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. 主機開機後,感應器上的燈會亮起來。

先校準(只要做一次)

循行者要先「認識」你場地上的黑色和白色,數值才會準。校準完會記在感應器裡,重新開機也還在(除非換場地)。

  1. 感應器插好、主機開機(感應器的燈亮起來)。
  2. 按住感應器上的校準按鈕約 0.5 秒再放開(不要一直按著,按著不放會一直重新校準)。
  3. 綠色校準指示燈(靠近校準按鈕)亮起後,5 秒內把感應器在黑線和白色地面之間來回掃幾次,16 個感應點都要掃過最黑的黑線和最白的白色區域。
  4. 掃的時候感應器離地 3~12 mm,太高會讀不準。
  5. 綠燈熄滅=校準完成,數值自動存進感應器。

怎麼知道校準好了? 放在白色地面時「線寬」是 0,壓在一般黑線上是 3~5。

數據通道對照表

官方 App 裡循行者 16 路被當成 SPIKE 顏色感應器,16 路的資料封裝在顏色感應器的各個通道裡。教育版和家用版的對照不同,請看你那一版。

教育版(LEGO Education SPIKE App,SPIKE 3)

官方積木 資料 範圍與解碼
顏色(Color) 特徵線寬 0 ~ 16:踩在線上的感應器數量。正常黑線一般是 3 ~ 5;十字路口或大色塊會大幅增加,可用來判斷路口
反射光(Reflected Light) 標準位置 0 ~ 32:16 正中央、0 最左、32 最右。讀到後 −16 就是循線位置(負=線在左、正=線在右),適合 PID 循線
紅色數值(Red) 高解析平滑位置 0 ~ 200:100 正中央。讀到後 −100 就是高精度循線位置(負=線在左);這個值要確實校準
綠色數值(Green) 前 8 顆光電值 0 ~ 65535:每 2 bit 一顆,每顆 0 ~ 3
藍色數值(Blue) 後 8 顆光電值 0 ~ 65535:每 2 bit 一顆,每顆 0 ~ 3

家用版(LEGO MINDSTORMS Robot Inventor App)

家用版 App 有些單一通道積木被官方限制在 0 ~ 126,所以位置與反射光資料改放在 RGB 與反射光通道,繞過 126 的限制:

官方積木 資料 範圍與解碼
顏色(Color) 特徵線寬 0 ~ 10:家用版顏色最大只到 10,線寬被限制在 0 ~ 10,常用來判斷十字路口
反射光(Reflected Light) 標準位置 0 ~ 32:讀到後 −16 就是循線位置,不受 126 限制
紅色通道(Red) 高解析平滑位置 0 ~ 200:讀到後 −100 就是高精度循線位置,家用版完全沒有縮水
綠色通道(Green) 前 8 顆光電值 0 ~ 255:每 1 bit 一顆,每顆 0 ~ 1
藍色通道(Blue) 後 8 顆光電值 0 ~ 255:每 1 bit 一顆,每顆 0 ~ 1

範例程式

循行者 16 路 SPIKE App 的 PID 循線積木

循行者 16 路 Robot Inventor App 的 PID 循線積木

PD 循線示範(速度 50)

跟 Pybricks 版同一套 PD 循線邏輯,教育版和玩具版各有積木和 Python,共 4 支。實測通過(2026-10-29~30):教育版 SPIKE App 3 的 Python(十字路口讀到線寬 16、會停車)、玩具版 Robot Inventor App 10.5.4 的積木與 Python。

警告

教育版積木 .llsp3 待重測:2026-10-29 上機只算部分通過:十字路口沒有停車、儀表板讀值慢一步、線寬超過 10 時「顏色」顯示 NaN。要十字路口停車,先用教育版 Python。

  • 教育版(SPIKE App 3):積木 .llsp3(待重測)・Python(小幫手已內嵌)

  • 玩具版(Robot Inventor App):積木 .lms・Python(小幫手已內嵌)

  • 全部打包(含 Pybricks 版)

  • 接線:感應器 C 埠、左馬達 E 埠、右馬達 F 埠。左右馬達裝的方向相反,左馬達要給負的功率才會往前:左=−(速度+PD)、右=速度−PD。

  • 讀值:細位置=「原始紅」− 100(兩版一樣)。線寬:積木版(教育版、玩具版都一樣)用「顏色」積木;只有玩具版 Python 用反射光 get_reflected_light()。

  • 速度 50(功率 %)、KP 0.4、KD 1.5 是建議值;十字路口停車:教育版線寬 > 10;玩具版積木 > 9(玩具版「顏色」最多只到 10);玩具版 Python > 10。

  • 舊韌體也能用:官方 App 讀的是模式 0,不受模式 7 改版影響。

  • 把 Python 貼進 SPIKE App 3 編輯器時,編輯器會把行尾 # 註解前面的空格縮短,這是自動排版,不影響程式。

玩具版(Robot Inventor App)Python

警告

LEGO 已在 2026-10-01 停止支援 Robot Inventor App,這段只給手上還有玩具版主機的人用;新專案建議用 SPIKE App 3 或 Pybricks。

  • 讀法(實機量過):細位置=get_rgb_intensity()[0] − 100、線寬=get_reflected_light()。get_color() 只有少數位置有顏色名稱,不能當位置;粗位置和每一路的光值這個 App 讀不到。
  • 小幫手:MBC_line16_ri_App_helper.py(類別 Line16RI:pos100()、width()),整份貼在程式最上面。
  • 範例:ex01_line_follow.py(小幫手已貼好):循線+十字路口停車,接線 C/E/F,已在 51515(App 10.5.4)實機跑過。

想學更厲害的循線方法?

可以找這幾位有豐富比賽與教學經驗的教練:LegoLauXiao 教練(示範影片)、legolaumo 教練(示範影片)。

第一次測試

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

常見問題

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

讀值

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

線位置 linePos

線位置
範圍 意思
-16~+16 線在哪一路:−16(最左)~+16(最右),0 = 正中間;站在車後往前看,負 = 線在左(平常 ±15,±16 只在最外側掉線後 200 ms 內)
主機 值 積木(更多感應器 → 顏色感應器) 換算
SPIKE Prime(教育版) 線位置 「反射光」 讀到的數,再減 16
Robot Inventor(玩具版) 線位置 「反射光」 讀到的數,再減 16

細位置 linePosFine

細位置
範圍 意思
-100~+100 線位置的細分:−100 ~ +100,0 = 正中間,負 = 線在左(與線位置同號)
主機 值 積木(更多感應器 → 顏色感應器) 換算
SPIKE Prime(教育版) 細位置 「原始紅」 讀到的數,再減 100
Robot Inventor(玩具版) 細位置 「原始紅」 讀到的數 ÷ 256 取餘數,再減 100(玩具版查表編碼,解法見上方安裝與設定)

韌體備註:byte2 = 細位置+100(0~200)、byte3 = 0;App 原始紅讀成 int16;細位置+100 經玩具版查表編碼成 byte2~3

線寬 lineWidth

線寬
範圍 意思
0~16 路 壓到線的路數 0~16,0 = 找不到線
主機 值 積木(更多感應器 → 顏色感應器) 換算
SPIKE Prime(教育版) 線寬 「顏色」 讀到的數
Robot Inventor(玩具版) 線寬 「顏色」 讀到的數

韌體備註:min(線寬, 10)

第 1~16 路光值 light

第 1~16 路光值
範圍 意思
0~100 第 116 路校準後光值 0100(第 1 路最左);編號 10~1F
主機 值 積木(更多感應器 → 顏色感應器) 換算
SPIKE Prime(教育版) 第 1~16 路光值 「原始綠」 讀到的數
Robot Inventor(玩具版) 第 1~16 路光值 「原始綠」 讀到的數 ÷ 256 取餘數(玩具版查表編碼,解法見上方安裝與設定)

韌體備註:每路 2 bit((v×10)>>8:0~25→0、26~51→1、52~76→2、77~100→3);byte4 = 第 5~8 路(第 5 路在 bit7-6)、byte5 = 第 1~4 路、byte6 = 第 13~16 路、byte7 = 第 9~12 路 → App 原始綠 = 第 1~8 路(bit15-14 = 第 1 路)、原始藍 = 第 9~16 路;byte 8~15 = 0;每路 1 bit(光值 ≥ 門檻(值 07,預設 40)= 1 亮,跟二值化判白同一個判斷;2026-11-03 以前的韌體是光值 > 50):第 1~8 路合成 1 byte(第 1 路在 bit7)經玩具版查表編碼成 byte4~5;第 9~16 路 → byte6~7

這個軟體讀不到:線段數、壓線位元圖、最後離線方向、二值化門檻、校準完成次數。要用這些值請改用 MBC 積木網站/Pybricks。

命令

這個軟體送不了命令(官方 SPIKE App 3、Pybricks 內建 ColorSensor 積木都不行)。要下命令請用 Pybricks+MBC 函式庫;校準也可以用感應器上的按鈕。

範例

範例 1:看見黑線

這個範例會做什麼:主機螢幕一直顯示線的位置(-16 ~ 16)。把黑線從左邊慢慢移到右邊,數字會從負的變成正的。

要準備什麼

  • SPIKE 主機 1 台
  • 循行者 16 路 1 個(已校準)
  • 一張白紙畫一條黑線(或比賽地圖)

怎麼接:循行者插 C 孔。

下載程式

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

範例 1 官方 App 積木

一步一步看懂程式

  1. 一直重複:下面的積木會一直做,直到你按停止。
  2. 讀線位置:官方 App 是「反射光 減 16」;MBC 積木網站和 Pybricks 直接有「線位置(-16~16)」。
  3. 顯示在螢幕上:官方 App 用「write(寫字)」,MBC 積木網站用「螢幕顯示數字」,Pybricks 用 hub.display.number()。
  4. 等 0.2 秒:讓數字停一下,眼睛才看得清楚。

跑起來應該看到什麼

  • 線在感應器正下方:螢幕顯示 0 附近(-2 ~ 2 都算中間)。
  • 把黑線往左移:數字變成 負的,越左越接近 -16。
  • 往右移:變成 正的,越右越接近 16。

常見問題

  • 數字一直是 0,不會變? → 先跑範例 2 看看:放在白紙上還是綠燈,代表每一點都以為是黑色,還沒校準,回到上面「先校準」。
  • 左右相反? → 先確認感應器沒有裝反(元件那一面要朝下、朝向地面)。裝對了還是相反,就把後面範例裡「左轉」「右轉」的數字正負對調。
  • 官方 App 顯示 16 而不是 0? → 忘了「減 16」。

範例 2:黑線警報

這個範例會做什麼:有看到黑線,主機中間的燈亮綠色;找不到線,燈變紅色並且嗶嗶叫。

要準備什麼:同範例 1。

怎麼接:循行者插 C 孔。

下載程式

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

範例 2 官方 App 積木

一步一步看懂程式

  1. 讀線寬:官方 App 用「color(顏色)」積木,讀到的就是線寬。
  2. 如果 線寬 > 0 就…:16 個感應點裡有任何一個踩到黑線 → 亮綠燈。
  3. 否則…:線寬是 0,代表一點都沒踩到 → 亮紅燈、嗶一聲。
  4. 等 0.1 秒再檢查一次。

跑起來應該看到什麼

  • 感應器放在黑線上:綠燈。
  • 移到白色地面:紅燈+一直嗶嗶叫。

常見問題

  • 一直是綠燈,放在白紙上也是? → 還沒校準(每一點都被當成黑色)。
  • 官方 App 的燈號顏色怎麼選? → 點「set Power Button light to」積木上的顏色圓點就能換。

範例 3:路口在哪一邊(16 路專屬)

這個範例會做什麼:16 路的感應點排得又寬又密,碰到路口時看得出「黑色那一大塊在哪裡」。主機螢幕會告訴你:

  • 一般的線 → ⬆
  • 左邊有岔路(T 字往左)→ ⬅
  • 右邊有岔路(T 字往右)→ ➡
  • 十字路口 → +
  • 找不到線 → ✕

要準備什麼:同範例 1,再用黑膠帶或筆畫出「往左的 T 字」「往右的 T 字」「十字」三種路口。

怎麼接:循行者插 C 孔。

下載程式

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

範例 3 官方 App 積木

一步一步看懂程式

  1. 先讀線位置和線寬,存進兩個「變數」(變數=有名字的盒子,可以放一個數字)。
  2. 如果 線寬 = 0 → 顯示 ✕(找不到線,這時線位置不準,所以要最先檢查)。
  3. 否則,如果 線寬 < 6 → 只有窄窄的一條,是一般的線 → 顯示 ⬆。
  4. 否則(線寬 6 以上=黑色變很寬,碰到路口了),再看黑色那一塊的中心「線位置」:
    • 線位置 < -3:黑色偏左 → 左邊有岔路 → ⬅
    • 線位置 > 3:黑色偏右 → 右邊有岔路 → ➡
    • 都不是:黑色在正中間、左右一樣寬 → 十字路口 → +

跑起來應該看到什麼:把感應器慢慢推過三種路口。經過往左的 T 字時會閃一下 ⬅,往右的 T 字閃 ➡,十字閃 +,其他時候是 ⬆。

常見問題

  • 一直顯示 ⬆,路口認不出來? → 推慢一點;或岔路的線太細,把「6」改成 5。
  • 一般的彎道也被當成路口? → 線太粗,把「6」改成 7。
  • 官方 App 為什麼沒有「+」符號? → 官方 App 用自己畫的 5×5 圖案(中間一橫一豎);MBC 積木網站和 Pybricks 直接顯示「+」這個字。
  • 官方 App 的圖案要怎麼改? → 點「turn on」積木上的小方格圖,就能自己點亮想要的格子。

範例 4:最簡單的循線

這個範例會做什麼:機器人自己沿著黑線走。線在左邊就往左轉、在右邊就往右轉、在中間就直走。

要準備什麼

  • 範例 1 的東西,再加上
  • 兩輪小車(兩顆馬達當輪子)
  • 一圈黑線(寬約 2 公分,轉彎不要太急)

怎麼接

  • 循行者插 C 孔,裝在車頭、離地約 0.5~1 公分
  • 左輪接 E、右輪接 F

下載程式

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

範例 4 官方 App 積木

一步一步看懂程式

  1. 告訴主機輪子接在哪裡:官方 App 是「set movement motors to E+F」;MBC 積木網站和 Pybricks 是「移動底盤 左輪 E、右輪 F」。
  2. 設定速度:官方 App 速度 30%;另外兩種是每秒 100 mm。先慢慢來,成功了再加快。
  3. 一直重複:讀線位置。
  4. 如果 線位置 < -2(線在左)→ 一邊走一邊左轉。
  5. 否則如果 線位置 > 2(線在右)→ 右轉。
  6. 否則(-2 ~ 2)→ 直走。

跑起來應該看到什麼:小車沿著線走,走起來會左右搖擺(這是正常的,範例 5 會改善)。

常見問題

  • 一開就往外衝、離線越來越遠? → 轉彎方向反了:把左右兩個轉彎的數字正負對調(官方 App:-40 和 40 對調;另外兩種:-60 和 60 對調)。
  • 小車往後退? → 馬達的裝法跟樂高標準小車相反。官方 App:請照樂高「標準驅動底盤」的方向裝馬達;MBC 積木網站:「移動底盤」積木裡左右輪的「正轉」方向都換成另一個;Pybricks:左輪改成 Direction.CLOCKWISE、右輪改成 Motor(Port.F, Direction.COUNTERCLOCKWISE)。
  • 轉彎太急衝出去? → 把速度調低。
  • 為什麼中間是 -2 ~ 2? → 16 路分得比較細,線稍微偏一點數字就會動,留一點範圍車子才不會一直扭來扭去。

範例 5:平順循線+十字路口停車

這個範例會做什麼:用「偏多少就轉多少」的方法循線,走得比範例 4 平順;遇到十字路口(整排感應點幾乎都踩到黑色)就停車並嗶一聲。經過 T 字岔路不會停,會繼續往前走。

要準備什麼:同範例 4,黑線上要有一個十字路口。

怎麼接:循行者插 C 孔;左輪接 E、右輪接 F。

下載程式

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

範例 5 官方 App 積木

一步一步看懂程式

  1. 讀細的線位置(-100 ~ 100):官方 App 是「raw red(原始紅色)減 100」。
  2. 讀線寬。
  3. 如果 線寬 ≥ 11(官方 App 寫成「線寬 > 10」,意思一樣)→ 十字路口:停車 → 嗶一聲 → 結束程式。
  4. 否則 → 轉彎的力道=線位置 × 一個數字(官方 App 乘 0.5,另外兩種乘 1.5)。偏得越多轉得越大,偏一點點就只轉一點點,所以不會左右亂晃。

跑起來應該看到什麼:小車順順地沿線走,經過 T 字岔路繼續走,到十字路口停下來嗶一聲。

常見問題

  • 還是左右搖晃? → 把「乘的數字」調小一點(例如 0.5 → 0.3)。
  • 轉彎跟不上、衝出線外? → 「乘的數字」調大一點,或把速度調低。
  • 到了十字路口沒停? → 車子太快、一下就衝過去了,把速度調低;或把「11」改成 10。
  • 還沒到十字路口,在 T 字岔路就停了? → 線太粗,把「11」改成 12 或 13(最大是 16)。
  • 官方 App 版到十字路口都不停? → 2026-10 上機時,教育版 SPIKE App 3 的「color(顏色)」積木在線寬超過 10 時,儀表板顯示 NaN,16 路積木的十字路口停車我們還在重測(同一台主機用官方 App 的 Python 讀得到線寬 16、會停車)。家用版(Robot Inventor)的「顏色」最多只到 10,十字路口一律用「> 9」。請把範例 1 的「反射光 減 16」換成「color」,把感應器放在十字路口上看螢幕的數字;如果最多只到 10,就把範例 5 的「> 10」改成「> 9」。
  • 官方 App 找不到「raw red」積木? → 開檔後會自動加上「更多感應器(More Sensors)」積木區;如果沒有,點左下角積木區的「+」加入「More Sensors」。

其他問題

  • 主機認不到感應器? 拔掉重插一次,等 2 秒;換一個孔試試。官方 App 會把它顯示成「顏色感應器」,這是正常的。
  • 可以同時用官方 App 和 Pybricks 嗎? 一次只能裝一種韌體:Pybricks 與 MBC 積木網站用 Pybricks 韌體,官方 App 用樂高原廠韌體;隨時可以用 SPIKE App 換回原廠韌體。

還有問題?到 聯絡我們 附上你用的軟體和程式截圖。

下載

本頁依據

  • 主機與軟體清單:_build/guides.json
  • 值與命令:_build/protocol/line16.json(單一真相來源)
  • 安裝與設定:_build/guides/software/spike-official.zh.md、_build/guides/product/line16/spike-official.zh.md
  • 範例:sensors/line16/spike-examples.md
LINE 詢價選購指南