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

三個步驟用 Arduino 讀神攝手

寫 Arduino 程式照這個順序:先接好線、貼上小幫手,再在 setup() 開始通訊、等神攝手準備好,最後在 loop() 用 mbcRead() 讀值。左邊一步一步做,右邊的程式會跟著長出來;在模擬的相機畫面裡拖動色塊、換顏色、調大小,就能看到序列埠監控視窗會印出什麼。

1

接線,貼上小幫手

Arduino 用 I2C(4 條線)跟感應器講話,不用安裝函式庫。程式最上面寫 2 行、最下面貼一段「小幫手」,之後就能用 mbcRead() 讀值、mbcWrite() 送命令。

你用哪一塊板子?(只差 SDA/SCL 接哪兩腳,程式完全一樣)

  1. 接線前先拔掉 USB 線。要用 通用 I2C 版(SPIKE 版、EV3 版的韌體不同,不能接 Arduino)。
  2. 感應器 VCC → 5V、GND → GND
  3. 感應器 SDA → A4、SCL → A5
  4. 神攝手接頭上的 IO3 = SDA、IO1 = SCL。神攝手要燒 I2C 版韌體:EV3 版、SPIKE 版用同一組腳走串口,只能二選一。
  5. 顏色先在神攝手上設定好:用背面的螢幕和按鍵做「設定 1:COLOR」選取樣點 S1、「設定 2:TRACK」選要追的顏色。設定存在機身,Arduino 只負責讀結果,程式改不了。
  6. 打開 Arduino IDE:檔案 → 新增,把原本的內容刪掉。
  7. 最上面寫第 1、2 行;最下面貼「小幫手」(右邊程式標 ① 的地方,按「複製程式」會一起拿到)。
2

開始通訊,等感應器準備好

setup() 是開機時只跑一次的地方:打開序列埠、開始 I2C、等感應器說「準備好了」。ADDR 是感應器的「門牌號碼」(I2C 位址),之後每次讀值都寫它。

感應器的 I2C 位址:

找不到感應器的時候:

3

使用功能

讀值寫「mbcRead(ADDR, 編號)」,送命令寫「mbcWrite(ADDR, 命令)」。點一個功能,程式和序列埠監控視窗會換成它的範例。

模擬感應器(相機看到的畫面):拖動色塊,看右邊序列埠監控視窗怎麼變

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

每個功能的範例

21 個功能(讀值、一次讀很多格、每款 MBC 感應器都有的共用編號),每個都有一段範例。按「試試看」會切到第 3 步,右邊的程式和序列埠監控視窗會換成這個範例。

完整範例

按「複製」拿到的是完整程式(最下面已經接好小幫手),貼進 Arduino IDE 就能上傳。

這是什麼顏色?

        

!讀取樣點 S1 的色相、飽和度、明度(0x01~0x03 一次讀),用中文說顏色名字;色相 −1 時用明度分黑/灰/白。顏色有變才印。分界的數字在最下面的 printHueName,可以依場地光線調整。

色塊在哪裡?

        

!0x05~0x0A 一次讀 6 個:X、Y、寬、高、面積、有找到。先看有沒有找到,再說色塊在「左/中/右」「上/中/下」。Y 是下 = 0、上 = 75,跟電腦螢幕相反。

伺服馬達跟著色塊轉(SG90,不用函式庫)

        

!把神攝手固定在 SG90 伺服馬達的擺臂上:色塊 X 0~100 換成 20~160 度;沒找到或讀不到就回 90 度。SG90 棕線 → GND、紅線 → 5V、橘線 → 9(ESP32 接 GPIO 13)。轉的方向反了把 REVERSE 改成 true。伺服一直抖或 Arduino 一直重開:USB 的電不夠,改接外接電池(4~6 V),負極也要接 GND。

使用注意

  1. 拔線不會讓程式停。讀不到時 mbcRead() 回傳 -32768(MBC_NONE),mbcReadMany() 回傳 false;插回去就恢復。學校版沒有的編號(例如 WRO 版的 0x10~0x2B)也會讀到 -32768。在右邊勾「拔掉感應器」可以看到這個情形。
  2. 小幫手裡的 delay(2) 不能刪。神攝手是 ESP32 做的從機,不能把 I2C 時脈拉住(時脈延展)等資料,所以寫完編號要等 2 ms 它才準備好;拿掉會讀到上一次的資料。神攝手開機要幾秒(鏡頭初始化+螢幕),所以 mbcWaitReady() 最多等 8 秒。序列埠監控視窗的速度要選 115200。
  3. 顏色要在神攝手上設定,程式改不了。色相看的是「設定 1:COLOR」的取樣點 S1,色塊看的是「設定 2:TRACK」選的顏色,都用機身背面的螢幕和按鍵設定(神攝手沒有寫入命令)。沒做設定 1 時色相一直是 0,跟紅色一樣,程式會以為看到紅色。
  4. 色相怎麼看:0~100 是把色相環 0~240 等比縮小:紅 0(100 也是紅)、黃約 17、綠約 33、青約 50、藍約 67、紫約 83。−1 = 黑白灰(飽和度低於 10,沒有顏色),這時用 0x03 明度分黑、灰、白(完整範例「這是什麼顏色?」就是這樣做)。
  5. 先判斷有沒有找到色塊。沒找到時 0x05~0x09(X、Y、寬、高、面積)都是 0,看起來像「色塊在左下角」,所以先看 0x0A(1 = 有找到)。X 是 0(左)~100(右);Y 是 0(下)~75(上),跟電腦螢幕座標相反。0x05~0x0A 連號,用 mbcReadMany() 一次讀,保證是同一瞬間(神攝手每 10 ms 更新一次)。
  6. 動態看的是整個畫面。0x04 跟顏色設定無關,畫面變化越多越大;車子自己在動時整個畫面都會變,要偵測「有人經過」就先讓車子停住。