MBC 測距者 2 路 × 樂高官方 SPIKE App

三個步驟用樂高官方 SPIKE App 讀測距者

在樂高官方 SPIKE App 裡,測距者 2 路會被當成顏色感應器,所以不用匯入函式庫,直接用「更多感應器」的原始紅/綠/藍積木讀,再換算成左、右和平均距離。左邊一步一步做,右邊的積木會跟著長出來;這些積木圖是直接從官方網頁版 App(spike.legoeducation.com)拼好匯出的,跟你在 App 裡看到的一樣。

1

開始:程式開始+一直重複

讀感應器要一直重複讀。先放黃色的「when program starts」,下面接「forever(一直重複)」,裡面放「wait 0.1 seconds」,每 0.1 秒讀一次。

  1. 打開樂高官方 SPIKE App,新增專案,選「Word Blocks(文字積木)」。
  2. 從「Events」拖出「when program starts」,從「Control」拖出「forever」接在下面。
  3. 再拖一顆「wait 1 seconds」放進 forever,數字改成 0.1。
2

認識三顆讀值積木,選對孔

官方 App 用「更多感應器」的原始紅、原始綠、原始藍三顆積木讀測距者,每顆積木最前面都有孔的下拉選單,要選測距者插的那個孔。讀到的數字要換算才是距離:

測距者插在哪個孔?
官方積木讀到的是換算
raw red(原始紅色)左距離 × 256÷ 256 再取整數(floor 積木)→ 左距離 0 ~ 120 公分
raw green(原始綠色)右距離 × 256÷ 256 再取整數 → 右距離 0 ~ 120 公分
raw blue(原始藍色)平均距離 × 256÷ 256 再取整數 → 平均距離 0 ~ 120 公分

這三顆積木在「More Sensors(更多感應器)」擴充裡:先按 App 左下角的擴充按鈕,加入「More Sensors」。「取整數」用 Operators 裡的「floor of」(無條件捨去)。120 = 前面沒東西。

3

存進變數、使用

在「Variables」新增變數(例如「左距離」「右距離」),用「set … to …」把換算好的值存進去,等於幫這個值取名字;之後顯示、判斷都用這個變數。點一個功能,積木和結果會換成它的範例。

模擬感應器(從上面往下看,車頭朝上):拖動左、右障礙物的距離,看右邊的結果怎麼變

模擬畫面是示意:距離直接用畫面上障礙物的位置換算,實際雷射會有 1~2 公分的誤差,大約每 0.1 秒才更新一次。120 = 前面沒東西(或超過 120 公分)。

每個功能的積木範例

官方 App 能讀到的功能,每個都有一組可以照著拼的積木(C 孔)。按「試試看」會切到第 3 步。

官方 App 讀不到的功能:官方 App 只讀感應器的「組合資料」,所以測距者的 雷射正常、開機狀態、故障狀態、毫米距離、感應器身分、韌體版本、感應器有接好 這些讀不到。要用這些功能,改用 MBC SPIKE 積木網站(有「雷射正常」)或 Pybricks(全部都有;主機要換 Pybricks 韌體)。

使用注意

  1. 已上機驗證(2026-11-03,SPIKE Prime 教育版 SPIKE App 3):範例實機通過,原始紅、綠、藍 ÷ 256 就是左、右、平均距離。
  2. 一定要換算。原始紅、綠、藍都要 ÷ 256 再取整數(floor);忘了換算,數字會是好幾千。
  3. 教育版的 color(顏色)=左距離、reflected light(反射光)=右距離,實測不會被截在 10/100(前面沒東西是 120),也可以用;這頁統一用原始紅、綠、藍。
  4. Robot Inventor(玩具版)積木換算不同:原始紅、綠、藍要 ÷ 64(不是 ÷ 256)=左、右、平均距離;反射光=左距離(跟教育版相反)、環境光=左距離(最多 100)、顏色只回 −1,不能讀距離。
  5. 讀到 120 有 4 種可能:前面真的沒東西、東西超過 120 公分、剛開機雷射還沒準備好(約 1~2 秒)、那顆雷射壞了。黑色、亮面、透明的東西比較難量,黑色物體大概 30~50 公分外就量不到。
  6. 方向:左右以感應器朝前、從背後看為準(左=J5、右=J3),原始紅是左邊那顆、原始綠是右邊那顆;左減右是負數 = 左邊比較近、正數 = 右邊比較近。