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

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

在樂高官方 SPIKE App 裡,測距者 8 路會被當成顏色感應器,所以不用匯入函式庫,直接用顏色感應器的積木讀,再拆開成第 1~8 路的距離。左邊一步一步做,右邊的積木會跟著長出來;這些積木圖是直接從官方網頁版 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 用顏色感應器的五顆積木讀測距者 8 路,每顆積木最前面都有孔的下拉選單,要選測距者插的那個孔。8 路的距離(公分)分散在這五顆積木裡,後面三顆一顆裝兩路,要拆開:

測距者插在哪個孔?
官方積木讀到的是怎麼拆
color(顏色,在 Sensors)第 1 路(正左邊)直接用
reflected light(反射光,在 Sensors)第 2 路(左前 60°)直接用
raw red(原始紅色,在「More Sensors」擴充)第 3 路 + 第 4 路 × 256除以 256 的餘數 = 第 3 路;÷ 256 取整數 = 第 4 路
raw green(原始綠色)第 5 路 + 第 6 路 × 256餘數 = 第 5 路;取整數 = 第 6 路
raw blue(原始藍色)第 7 路 + 第 8 路 × 256餘數 = 第 7 路;取整數 = 第 8 路

要用原始紅/綠/藍,先按 App 左下角的擴充按鈕,加入「More Sensors」。「餘數」用 Operators 的「… mod …」,「取整數」用「floor of …」包住「… / 256」。

3

存進變數、使用

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

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

模擬畫面是示意:方向和距離用畫面上的位置簡單換算,實際感應器可能差一兩格。紅色扇形 = 那一路量到東西;灰色扇形 = 讀到 120(那個方向沒有東西)。第 4、5 路都朝正前方。

每個功能的積木範例

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

官方 App 讀不到的功能:官方 App 只讀感應器的「組合資料」(8 路的公分距離),所以測距者的 最近目標方向/距離、最空曠方向 要像上面的範例自己用積木一路一路比;每一路正常/故障、毫米距離、感應器身分、韌體版本、感應器有接好 這些完全讀不到。要直接用這些功能,改用 MBC SPIKE 積木網站或 Pybricks(主機要換 Pybricks 韌體)。

使用注意

  1. 官方 App 的感應器積木選「顏色感應器」那一組。測距者 8 路對官方 App 來說就是一顆顏色感應器;原始紅/綠/藍要先加入「More Sensors」擴充。這頁只適用教育版(SPIKE 3),家用版(Robot Inventor)讀到的格式不一樣。
  2. 一定要拆。原始紅/綠/藍一顆積木裝兩路:餘數是前一路、取整數是後一路。忘了拆,數字會變成好幾千。
  3. 官方 App 的讀法還沒有用實機逐一確認。特別是第 1 路(顏色積木)和第 2 路(反射光積木):App 可能只認得 0~10、0~100 的數字。如果不管手放哪裡都顯示怪怪的數字,請改用 MBC 積木網站或 Pybricks。
  4. 讀到 120 = 那個方向沒東西(或超過 120 公分、剛開機 2~4 秒還沒準備好、那一路故障)。黑色、亮面、透明的東西比較難量,判斷距離建議設在 60 公分以內。
  5. 方向:站在車後面往前看,左邊是負數、右邊是正數;第 1 路朝正左邊、第 4、5 路朝正前方、第 8 路朝正右邊。用積木算方向時:方向 = 第幾路 × 2 − 9(第 1 路 −7、第 4 路 −1、第 5 路 +1、第 8 路 +7)。