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

三個步驟用 Pybricks 積木讀神攝手 WRO 版

積木跟 MicroPython 一樣照這個順序:先在「set up」下面匯入函式庫,再建立物件、幫感應器取名字,最後在「program」下面用這個名字呼叫功能。左邊一步一步做,右邊的積木會跟著長出來;這些積木圖是直接從 Pybricks Code 拼好匯出的,跟你在畫面上看到的一樣。

先確認:Pybricks 的積木模式要授權碼或 Patreon 贊助才能用。沒有授權可以改寫 MicroPython,寫法一模一樣(右邊切到「對應的 MicroPython」就看得到)。

1

匯入函式庫

積木程式的第一件事,是在黃色「set up」下面接一塊紅色的「from … import …」積木,告訴 Pybricks 要用神攝手 WRO 版的函式庫。

選一種函式庫(兩種積木完全一樣,只差 from 後面的名字):

  1. 下載函式庫(存成檔案,檔名不要改):MBC_hue12.py(只接神攝手 WRO 版)或 MBC_sensors.py(統一函式庫);你選的是 MBC_hue12.py。
  2. 在 Pybricks Code 左邊檔案區按「Import a file」,把它匯入同一個專案,檔名不要改。
  3. 按「+」新增檔案,選用積木(blocks)寫。
  4. 從積木清單拖出紅色的「from … import …」,接在「set up」下面,選好兩個名字。

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

2

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

再拖一塊紅色的「… is a …」積木接在匯入積木下面:最左邊是你幫感應器取的名字,後面是孔位和要不要多工。之後每次讀值,都是選這個名字。程式一開始跑,電腦畫面會印出 Connected to ID: 95,95 就代表接的是神攝手 WRO 版。

感應器接在哪個孔?

幫它取名字(Pybricks 裡可以取任何英文名字,這裡用三個示範):

要不要開啟多工?(積木上綠色的 true/false)

孔位那格填的是編號:SPIKE 1~6 = A~F,3 就是 C 埠。

3

使用功能

在「program」下面放紅色的功能積木:第一格選名字 hue12,中間選 await,最後一格選功能。神攝手 WRO 版要先放一塊 update(讀一次最新的 12 格),再用 get_slot 拿某一格的顏色。點一個功能,積木和輸出會換成它的範例。

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

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

每個功能的積木範例

5 個功能,每個都有一組可以照著拼的積木(名字 hue12、多工 true)。按「試試看」會切到第 3 步,右邊的積木和輸出會換成這個範例。

使用注意

  1. 函式庫檔要先匯入專案。沒有匯入 MBC_hue12.py,紅色積木裡選不到 MBC_HUE12。
  2. await 和 call 要跟多工一致:多工 true 就選 await,多工 false 就選 call。混著用,程式會在主機上出錯。
  3. 一定要先 update:get_slot 不會自己去讀感應器,只拿 update 存好的資料;沒有先放 update,12 格會一直是 ('NONE', 255, 0)。每一圈放一塊 update 就好。
  4. 拔線不會讓程式停:讀不到時 update 回傳 False、get_slot 回傳上一次的資料;用 sensor_ok 功能可以知道有沒有接好。device_id、firmware_version 這款讀不到(會出現 ValueError),要確認接的是神攝手 WRO 版,看一開始印出的 Connected to ID: 95。
  5. 積木背後就是 MicroPython。Pybricks Code 右邊的程式窗格就是積木產生的程式,跟這頁「對應的 MicroPython」一樣(多工版會多一行 await wait(0),是 Pybricks 自動加的)。色相 0~239 是彩色、240~245 白、246~250 黑、255 = 這一格沒設定。