神攝手舊版已停止支援:2026-10 以前出貨的神攝手(學校版/WRO 版)已停止支援,說明與範例保留供參考。需要升級成目前的神攝手:請聯繫原購買的經銷商寄回,韌體更新免費,來回運費由買家負擔。 你要找的是目前的神攝手 →
MBC 神攝手(學校老師創意賽版)× Pybricks

三個步驟用 MicroPython 讀神攝手

寫 Pybricks 程式一定照這個順序:先匯入函式庫,再建立物件、幫感應器取名字,最後才用這個名字去呼叫功能。左邊一步一步做,右邊的程式會跟著長出來;在模擬的相機畫面裡拖動色塊、換顏色、調大小,就能看到程式會印出什麼。

你的主機:
1

匯入函式庫

程式的第一件事是告訴 Pybricks「我要用神攝手的函式庫」。沒有這行,後面寫的 MBC_CAM_SCHOOL 主機看不懂,會出現 NameError。

選一種函式庫(兩種寫法完全一樣,只差 import 那一行):

  1. 下載函式庫(存成檔案,檔名不要改):MBC_cam_school.py(只接神攝手)或 MBC_sensors.py(統一函式庫);你選的是 MBC_cam_school.py。
  2. 在 Pybricks Code 左邊檔案區按「Import a file」,把它匯入同一個專案。
  3. 檔名不要改,也不要放進子資料夾。
  4. 回到主程式,在最上面寫下面這幾行(右邊程式標 ① 的地方)。
2

建立物件:幫感應器取名字

一台車可能接好幾個感應器,所以要「建立一個物件」:告訴程式感應器接在哪個孔,並幫它取個名字。之後每次要讀值,都是叫這個名字。

感應器接在哪個孔?

要不要開啟多工?

程式裡的 3 就是孔位編號:SPIKE 1~6 = A~F。也可以寫成 Port.C,但要多匯入 from pybricks.parameters import Port。

3

使用功能

寫法都是「cam.功能名稱()」:名字+小數點+功能。點一個功能,程式和輸出會換成它的範例。

模擬感應器(相機看到的畫面):拖動色塊,看右邊的輸出怎麼變

模擬畫面是示意:數值換算簡化過,實際感應器會因為光線差幾格。十字 = 取色點(感應器上「設定 1:COLOR」選的位置),色相、飽和度、明度讀的是十字那一點;綠框 = 感應器追到的色塊(「設定 2:TRACK」選的顏色)。X 左 0、右 98;Y 下 1、上 75。

每個功能的範例

15 個功能,每個都有一段可以直接放進迴圈的範例。按「試試看」會切到第 3 步,右邊的程式和輸出會換成這個範例。

完整範例

轉頭追色塊(SPIKE,左輪 E、右輪 F)

        

!先在感應器上做「設定 2:TRACK」選好顏色。只改最上面「要改的地方」就好。車子一直左右抖:把 KP 調小;轉太慢跟不上:調大。色塊在左邊車子卻往右轉:把 KP 改成負數。

多工寫法(進階)

        

!建立物件時第 2 個參數寫 True,物件要放在 run_task() 外面;每個功能前面都要加 await。

跟其他 MBC 感應器一起用

        

!改用統一函式庫:只改 import 那一行,匯入 MBC_sensors.py。兩種函式庫不要同時匯入。

使用注意

  1. 拔線不會讓程式停。讀不到時回傳上一次讀到的值,從來沒讀到過就回傳 None,電腦畫面印一行提醒;插回去自動恢復。要知道有沒有接好就用 sensor_ok()。在右邊勾「拔掉感應器」可以看到這個情形。追色塊時拔線,車子會照最後看到的位置繼續轉。
  2. 顏色要在感應器上設定,程式改不了。色相看的是「設定 1:COLOR」的取色點,色塊看的是「設定 2:TRACK」選的顏色,都只能用感應器機身的按鍵設定。沒做設定 1 時色相一直是 0,跟紅色一樣,程式會以為看到紅色。
  3. 先判斷有沒有找到色塊。沒找到時 blob_x()、blob_y()、blob_w()、blob_h()、area() 都是 0,看起來像「色塊在左下角」。所以先用 found()(或 area() == 0)判斷,再看位置。
  4. 同一組資料,10 ms 內重複讀不會變慢。read_all()、色相到色塊高、found()、area() 是同一組,一次呼叫好幾個沒關係。SPIKE 上 blob_xya() 是另一組,device_id()、firmware_version() 也是(放在迴圈外面)。EV3 讀不到 device_id()、firmware_version(),其他功能都一樣。SPIKE 的 area()、blob_xya()、device_id() 要感應器韌體 2026-10 以後;舊韌體面積一直是 0,可以改用 blob_w() * blob_h()。
  5. 座標方向:站在車後面往前看,X 是左右:左 0、右 98、正中間約 50,所以 blob_x() - 50 在左邊是負數、右邊是正數。Y 是上下:下面小、上面大(下 1、上 75)。左右剛好相反時,到感應器的鏡頭選單切換 H-Mirror。
  6. 動態值要停住才準。機器人自己在動、或鏡頭在晃,整個畫面一直變,動態值會一直很大。