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

三個步驟用 MicroPython 讀神攝手 WRO 版

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

你的主機:
1

匯入函式庫

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

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

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

主機的 Pybricks 韌體要 v4.0.0b5 以上,太舊的韌體讀不到神攝手 WRO 版(12 格會一直是 255)。

2

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

一台車可能接好幾個感應器,所以要「建立一個物件」:告訴程式感應器接在哪個孔,並幫它取個名字。之後每次要讀值,都是叫這個名字。建立物件時,電腦畫面會印出一行 Connected to ID: 95,95 就代表接的是神攝手 WRO 版。

感應器接在哪個孔?

要不要開啟多工?

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

3

使用功能

寫法都是「hue12.功能名稱()」:名字+小數點+功能。神攝手 WRO 版要先用 update() 讀一次最新的 12 格,再用 get_slot() 拿某一格的顏色。點一個功能,程式和輸出會換成它的範例。

模擬神攝手畫面(12 格排成一排):點格子換顏色,看右邊的輸出怎麼變
要塗的顏色(先選顏色,再點上面的格子):

模擬畫面是示意:每種顏色用一個代表數字,實際的色相、飽和度會跟著燈光和物塊變。12 格的位置是你在感應器上設定的,這裡排成一排方便看(第 1 格在最左邊);紅框 = 範例讀的第 1 格,格子下面的數字是程式讀到的色相。

每個功能的範例

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

完整範例

依顏色轉向(SPIKE,左輪 E、右輪 F)

        

!只改最上面「要改的地方」就好。第 1 格看到紅色原地右轉、綠色原地左轉,其他顏色停。綠色沒反應:先用 get_slot() 看你的綠色是多少,再改 60~110。車子轉反了:把 Direction.COUNTERCLOCKWISE 移到另一顆馬達。

12 格一次看完

        

!一圈只要 update() 一次,後面讀 12 格都是拿剛剛讀好的資料,不會變慢。印出來像 ['Red', 'Grn', 'Wht', …]。

多工寫法(進階)

        

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

跟其他 MBC 感應器一起用

        

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

使用注意

  1. 一定要先 update()。get_slot() 不會自己去讀感應器,只拿 update() 存好的資料;沒有呼叫 update(),12 格會一直是 ('NONE', 255, 0)。每一圈迴圈呼叫一次就好,之後讀幾格都不會變慢。
  2. 拔線不會讓程式停。讀不到時 update() 回傳 False、get_slot() 回傳上一次讀到的資料(從來沒讀到過就是 ('NONE', 255, 0)),電腦畫面印一行提醒;插回去自動恢復。要知道有沒有接好就用 sensor_ok()。在右邊勾「拔掉感應器」可以看到這個情形。
  3. 色相怎麼看:0~239 是彩色(紅色在頭尾:0~9 和 230~239)、240~245 白、246~250 黑、255 = 這一格沒設定(感應器還在選單裡時,12 格也全部是 255)。顏色名稱:Red 紅、Org 橘、Yel 黃、Lim 黃綠、Grn 綠、Mnt 薄荷綠、Cyn 青、Azr 天藍、Blu 藍、Prp 紫、Mag 洋紅、Pnk 粉紅、Wht 白、Blk 黑、NONE 沒設定。
  4. 沒有身分資料:device_id()、firmware_version() 這款讀不到,SPIKE 和 EV3 都會出現 ValueError。要確認接的是神攝手 WRO 版,看建立物件時印出的 Connected to ID: 95;不是 95,就是接錯感應器,或主機的 Pybricks 韌體太舊。
  5. 進階:一次拿 12 格。hue12.slots 是 12 格的清單(同樣要先 update()),每一格是 (色相, 飽和度, 名稱),順序跟 get_slot() 不一樣,而且不用加 await。SPIKE 和 EV3 讀的是同一組資料,用法完全一樣。