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

這頁內容已整合到新的說明頁:神攝手 ESP32CAM

神攝手 WRO 版(HUE12) 指令參考

回到神攝手 WRO 版(HUE12)產品頁

這一頁列出神攝手 WRO 版(HUE12)送給每個上位機的每一個值、每一個命令:它是什麼意思、範圍多少、在 SPIKE/EV3/Arduino I2C/mBlock/MATRIX/micro:bit 各要怎麼讀。網址加 ?host=spike(或 ev3、arduino、mblock、matrix、microbit)會直接展開那個平台。

SPIKEEV3Arduino I2CmBlockMATRIXmicro:bit

項目 內容
I2C 出廠位址 0x4C
hw[0] 2(F0 高 byte、SPIKE 模式 8/EV3 模式 5 ID 高 byte)
型號 HUE12
協議版本 2
支援平台 SPIKE、EV3、Arduino I2C、mBlock、micro:bit

值一覽

編號 值 範圍 SPIKE EV3 Arduino I2C mBlock micro:bit
10~1B 色點 1~12 顏色碼 0~255 ✓ ✓ ✓ ✓ ✓
20~2B 色點 1~12 鮮豔度 0~255 ✓ ✓ ✓ ✓ ✓

✓ = 這個平台有這個值;— = 沒有(表格裡的平台欄位只列產品支援的平台)。

每個值怎麼讀

10~1B 色點 1~12 顏色碼 spotColor

色點 1~12 顏色碼
項目 內容
用途 101B = S1S12 顏色碼:0239 彩色(色相 0255 等比縮成 0239)、240245 白(飽和度 < 30,越低越大)、246~250 黑(明度 < 30,越暗越大)、255 = 色點沒開
範圍 0~255
I2C/mBlock 編號 10~1B
鎖住 🔒 已鎖住的樂高模式排法不再改

怎麼讀

SPIKE

模式 0 (edu) byte 0 🔒。備註:同 EV3:Pybricks read(0) 得 8 個 int32,每個拆 3 byte(積木網站 MBC_HUE12 設定檔);玩具版不送;鎖住

from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port

dev = PUPDevice(Port.A)   # 感應器插 A 孔

spotColor = dev.read(0)[0]   # 色點 1~12 顏色碼

MBC 函式庫

from pybricks.parameters import Port
from MBC_hue12_Lib import HUE12Sensor

cam = HUE12Sensor(Port.A)
cam.update()   # 每圈先更新一次
spotColor = cam.get_slot(1)[1]   # list,第 1 路 = [0]
EV3

模式 0 · int32×8 · HUE12 8×int32 LE(32 B):24 byte = [色相, 鮮豔度]×12,每 3 byte 塞一個 int32(byte3 = 0);格 n 色相 = byte 2(n−1) → int32 k = idx/3、byte = idx%3;鎖住(已鎖住的模式,韌體與主機端都不再改)

from pybricks.iodevices import LUMPDevice
from pybricks.parameters import Port

sensor = LUMPDevice(Port.S1)   # 感應器插 1 號孔

spotColor = sensor.read(0)[0:12]   # 色點 1~12 顏色碼
' clev3r (BASIC)
Sensor.SetMode(1, 0)
spotColor1 = Sensor.ReadRawValue(1, 0)   ' 第 1 筆;第 N 筆改成 0 + N - 1
Arduino I2C

編號 0x10~0x1B 連號,一次 mbcReadMany 讀完保證同一瞬間。

int16_t spotColor[12];
mbcReadMany(0x4C, 0x10, 12, spotColor);   // 色點 1~12 顏色碼:0~255
for (uint8_t i = 0; i < 12; i++) { Serial.print(spotColor[i]); Serial.print(' '); }
Serial.println();
mBlock

積木傳回 色點 112 顏色碼(0255)。主機送 [10] → 回 [值低][值高][10 ^ 值低 ^ 值高],值 = int16 小端;第 N 路的編號 = 0x10 + (N − 1)。

(神攝手舊版 WRO 連接埠 [1 v] 色點 [1 v] 顏色碼 :: sensing)
micro:bit

感應器沒接好(讀不到)時回 0,先用「位址 … 的裝置就緒?」確認接線。

(神攝手 色點 (1) 顏色碼 :: #00A4E4)
let spotColor = mbc.camSpotColor(1)   // 色點 1~12 顏色碼:0~255(N = 1~12)

相關積木「神攝手 色點 [1~12] 是 [彩色]?」

let camSpotIs = mbc.camSpotIs(1, MbcCamSpotKind.Colour)

20~2B 色點 1~12 鮮豔度 spotVivid

色點 1~12 鮮豔度
項目 內容
用途 202B = S1S12 鮮豔度(飽和度)0~255:黑 = 1、白/彩色 = 實際飽和度;色點沒開 = 0
範圍 0~255
I2C/mBlock 編號 20~2B
鎖住 🔒 已鎖住的樂高模式排法不再改

怎麼讀

SPIKE

模式 0 (edu) byte 1 🔒。備註:同 EV3;鎖住

from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port

dev = PUPDevice(Port.A)   # 感應器插 A 孔

spotVivid = dev.read(0)[1]   # 色點 1~12 鮮豔度

MBC 函式庫

from pybricks.parameters import Port
from MBC_hue12_Lib import HUE12Sensor

cam = HUE12Sensor(Port.A)
cam.update()   # 每圈先更新一次
spotVivid = cam.get_slot(1)[2]   # list,第 1 路 = [0]
EV3

模式 0 · int32×8 · 同 10~1B:格 n 鮮豔度 = byte 2(n−1)+1;鎖住(已鎖住的模式,韌體與主機端都不再改)

from pybricks.iodevices import LUMPDevice
from pybricks.parameters import Port

sensor = LUMPDevice(Port.S1)   # 感應器插 1 號孔

spotVivid = sensor.read(0)[0:12]   # 色點 1~12 鮮豔度
' clev3r (BASIC)
Sensor.SetMode(1, 0)
spotVivid1 = Sensor.ReadRawValue(1, 0)   ' 第 1 筆;第 N 筆改成 0 + N - 1
Arduino I2C

編號 0x20~0x2B 連號,一次 mbcReadMany 讀完保證同一瞬間。

int16_t spotVivid[12];
mbcReadMany(0x4C, 0x20, 12, spotVivid);   // 色點 1~12 鮮豔度:0~255
for (uint8_t i = 0; i < 12; i++) { Serial.print(spotVivid[i]); Serial.print(' '); }
Serial.println();
mBlock

積木傳回 色點 112 鮮豔度(0255)。主機送 [20] → 回 [值低][值高][20 ^ 值低 ^ 值高],值 = int16 小端;第 N 路的編號 = 0x20 + (N − 1)。

(神攝手舊版 WRO 連接埠 [1 v] 色點 [1 v] 鮮豔度 :: sensing)
micro:bit

感應器沒接好(讀不到)時回 0,先用「位址 … 的裝置就緒?」確認接線。

(神攝手 色點 (1) 鮮豔度 :: #00A4E4)
let spotVivid = mbc.camSpotVivid(1)   // 色點 1~12 鮮豔度:0~255(N = 1~12)

狀態旗標 F3

F3 每個 bit 一個狀態;I2C、mBlock、micro:bit 直接讀。

bit 名稱 說明
b0 就緒 (ready) 恆 1;b1 = 0(WRO 版沒有「有找到色塊」)
SPIKE

SPIKE 沒有 F3 旗標;模式 8 回裝置 ID/版本。官方 App 讀不到模式 8。

from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port

dev = PUPDevice(Port.A)   # 感應器插 A 孔

id_word, proto, fw, seq = dev.read(8)   # 模式 8:[ID | hw0<<8, 協議版 2, 主版×100+次版, 更新序號]
addr = id_word & 0xFF   # 0x4C
hw0 = id_word >> 8      # 2
EV3

EV3 沒有 F3 旗標;模式 5 回裝置 ID 與韌體版本(ID 格式 B)。

from pybricks.iodevices import LUMPDevice
from pybricks.parameters import Port

sensor = LUMPDevice(Port.S1)   # 感應器插 1 號孔

id_word, fw = sensor.read(5)   # 模式 5:[ID | hw0<<8, 主版×100+次版]
addr = id_word & 0xFF             # 0x4C
hw0 = id_word >> 8                # 2
Arduino I2C
int16_t st = mbcRead(0x4C, 0xF3);
bool ready = st & (1 << 0);   // 就緒
mBlock

狀態旗標 F3 的各 bit 由擴展拆成布林積木(就緒、校準中…)。

<神攝手舊版 WRO 連接埠 [1 v] 連線正常? :: sensing>
micro:bit
<位址 (0x4C v) 的裝置就緒? :: #00A4E4>
let ready = mbc.deviceReady(0x4C)   // F3 bit0;沒接 = false
let st = mbc.status(0x4C)   // F3

共用暫存器與命令

所有產品相同,只在 通用 I2C 協議 寫一次:

編號 名稱 說明
F0 裝置 ID 低 byte = 出廠 I2C 位址(換位址後不變),高 byte = hw[0](通道數/顆數/類別)
F1 協議版本 本版 = 2(SPIKE 模式 8 v[1]、EV3 ID 封包同一個數字)
F2 韌體版本 主版×100 + 次版(例 102 = 1.2)
F3 狀態旗標 b0 就緒,其餘各產品定義(見各產品 flags)
F4 更新序號 每 10 ms 快照 +1,0~255 循環(2.56 秒一圈,不能拿來偵測重開機;不動 = 模組忙)
F5 開機秒數 開機後秒數,到 32767 停住(約 9 小時);數字變小 = 重開機過
F8 換 I2C 位址 [F8][新位址 0x08~0x77][新位址取反],存 EEPROM,重開機後生效;[F8][0x00][0xFF] = 回出廠位址(共識 B-5)
EF 重新開機 [EF][0xA5];mBlock 先回 ACK 再重開

本頁依據與假設

本頁由 _build/gen-reference.mjs 從 _build/protocol/cam_wro.json(單一真相來源,轉錄自 2026-10-21 協定定案)產生。

  • hw0 = 2(共識 #6:神攝手 2 = WRO 版);model = HUE12(樂高模式名)。
  • I2C 0x4C 與學校版同一位址(主機用 F0 高 byte 1/2 分辨);D4:SDA = IO3、SCL = IO1,與 EV3/SPIKE 串口模式二選一編譯;ESP32 從機 onReceive 預載 32 B;上機待測。mBlock 用 Serial.begin(38400, SERIAL_8N1, 3, 1)。
  • 值表只有 101B、202B(mBlock 定案);兩群各 12 個,I2C 一次連續讀 12 個值(24 B)剛好一群。
  • EV3/SPIKE 只有一個模式 HUE12(type 95,動態描述表 DATA32×8),鎖住照盤點 §0-2 排法;沒有 ID 模式(type 95 只宣告 1 個模式,不加)。
  • mVision 鎖住照盤點 §4:[0xAA][9][18 B][xor],byte 011 顏色碼、1217 鮮豔度 4 bit;WRO 隊伍的 HUE12_AS_mVisionSensor_v1.0.8.mbr4 在用,不動;B-6:不節流(每圈 loop 送)。
  • mVision 的鮮豔度是 S>>4(015),值表 202B 是完整 0~255;兩者不同是既有設計,不改。
  • 顏色碼 255 只代表「色點沒開」,不代表「沒找到」(沒抓到時仍回種子點顏色,盤點 §0-1)。
  • 不做 0x22(hosts.matrix = false);沒有寫入命令;F3 只有 b0。
LINE 詢價選購指南