MBC Servo6 舵機擴充器(適用 SPIKE™) × SPIKE × Pybricks
這一頁只講 Pybricks(Python):在 SPIKE Prime/Robot Inventor 上用它讀MBC Servo6 舵機擴充器(適用 SPIKE™)的安裝步驟、每個值怎麼讀與範例。要換產品、主機或軟體,用上方的切換列。
安裝與設定
你需要
- 感應器:MBC Servo6 舵機擴充器(適用 SPIKE™)(SPIKE 版)。
- 主機:SPIKE Prime 或 Robot Inventor。
- 電腦:Chrome 瀏覽器,打開 code.pybricks.com 就能寫,不用安裝。
- 主機韌體:要先換成 Pybricks 韌體 v4.1(code.pybricks.com 正式版是 v4.1.1;MBC SPIKE 積木網站燒的 v4.1.0 也可以)。本站範例都照 v4.1 寫。
- 函式庫:``(要用「匯入函式庫」的寫法才需要)。自己寫新程式只要匯入
MBC_sensors.py,一個檔適用全部 MBC 感應器。
注意
Pybricks 3.6.1 版的函式庫與範例已不再更新(2026 年新款 SPIKE Prime 也不能用 3.6.1)。還沒升級的主機,舊檔放在下載專區的「舊版(不再更新)」。
安裝軟體
- 用 Chrome 打開 code.pybricks.com。
- 主機換成 Pybricks 韌體:最簡單的方法是到 MBC SPIKE 積木網站 上方選單「SPIKE 主機 → 安裝/更新 Pybricks 韌體」,約 3 分鐘。
- 之後想回到樂高官方 App,用 SPIKE App 就能換回樂高原廠韌體。
讓軟體認得感應器
Pybricks 有兩種讀法,挑一種就好:
匯入函式庫的步驟:
- 在 code.pybricks.com 左邊檔案區按「Import a file(匯入檔案)」。
- 範例檔和 `` 兩個都要匯入,放在同一個專案列表裡。
- 點開範例,按 ▶ 執行。
重要
新專案用
MBC_sensors.py;舊專案只換掉原本那一個檔。MBC_sensors.py一個檔適用全部 MBC 感應器(EXP6、Servo6 擴充器的函式庫另外下載),寫法是from MBC_sensors import MBC_LINE8,類別名稱跟舊檔名裡的一樣。舊檔名(例如本頁範例用的 ``)保留給舊程式:用新版的同名檔換掉原本那個檔就好,程式不用改。但每個舊檔名都是整份共用檔,一個程式匯入 3 個以上舊檔名,會超過 SPIKE 程式槽約 51 KB 的上限;要混用多款感應器,就只匯入MBC_sensors.py。
提示
檔名要跟程式裡
import的名字完全一樣,函式庫才載得進來,否則會出現ImportError。本站下載的函式庫檔名都沒有版本字尾,不用改名。
提示
函式庫建立物件時大多有
multitask參數:填False是一般模式,一行一行執行;填True是多工模式,每個呼叫前要加await,可以同時做很多件事。
接線
- 用連接線把感應器插在主機的 A 孔(A~F 任一孔都可以)。
- 程式裡的孔要選同一個:內建指令用
Port.A~Port.F;函式庫的port參數多半是1~6,對應 A~F。 - 接頭卡榫朝上,輕輕推進去。
注意
Servo6 即將推出:已完成電路與韌體,正在做最後的主機實測,規格以正式上市版本為準。只支援 SPIKE Prime(不支援 Robot Inventor 與 EV3)。
接線與供電
- 主機通訊線:把擴充器的 SPIKE 連接線插進主機任一孔(Port A~F)。
- 接舵機:舵機 3 線插頭依板上標示(訊號/VCC/GND)插到 CN1~CN6,可接 SG90、MG996R 這類 500~2500 µs 訊號的舵機。
- 不用接電池:主機握手完成後會自動把電池電壓送到擴充器,綠燈由快閃轉為恆亮。舵機電源總電流上限約 0.75 A,大扭力舵機請先確認工作電流。
提示
剛上電時擴充器不會輸出任何脈衝,舵機不會亂跳;收到第一個角度指令時會直接到位(不套速度斜坡),之後的指令才會用你設定的速度慢慢轉。
放進函式庫
- 主機要是 Pybricks 韌體 v4.0 以上。
- 下載 Pybricks 函式庫+範例(.zip),把
MBC_servo6_Lib.py放進 Pybricks 專案(跟主程式同一層),就能import。
第一次執行要按 Y
函式庫用 UARTDevice(port, 115200, power_pin=1) 主動要求主機把電池電壓送到擴充器。第一次執行主控台會出現:
Custom electronics may damage your LEGO hub ... Press Y to proceed.按 Y(只需一次,主機會記住)。按 N 的話舵機不會有電。
from pybricks.tools import wait
from MBC_servo6_Lib import MBC_SERVO6
sv = MBC_SERVO6(1, False) # 擴充器插在 Port A(1=A … 6=F),False = 一般模式
sv.servo_angle(1, 90) # CN1 轉到 90°
wait(1000)
sv.stop_all() # 程式結束前放鬆所有舵機提示
擴充器沒有看門狗,程式結束後舵機會維持最後位置;要放鬆請在程式最後呼叫
stop_all()(多工寫法用函式庫版run_task會自動做)。堵轉自動放鬆後,再送同一個角度不會重新上力,請先送不同角度或先servo_release()。
第一次測試
- 主機開機,在 code.pybricks.com 連上主機。
- 匯入並打開本頁的範例 1,按 ▶。
- 主控台印出的數字跟著感應器前方的東西變化,就是接好了。
常見問題
- 出現
ImportError? 函式庫沒有匯入到同一個專案,或檔名跟import的名字不同。把檔名改成 `` 再匯入一次。 - 範例跑不起來、指令不認得? 主機韌體太舊:本站範例照 Pybricks v4.1 寫,先把主機更新到 v4.1。3.6.1 已不再更新,舊版檔案在下載專區。
- 感應器拔線(或線鬆了)怎麼辦? 程式不會停下來:函式庫會回傳上一次讀到的值,並在主控台印一次提醒(中英並列:
MBC: Port C 讀不到感應器,先回傳上一次的值 / no sensor, using the last value);開機時就沒接上的話回傳None。要在程式裡檢查,用物件的sensor_ok():最近一次有讀到是True,讀不到是False(多工模式要寫await)。插回去後函式庫會繼續讀;如果是開機時就沒接上、又用多工模式,要重新執行程式。 - 標「只有 Pybricks 版」的範例讀到怪數字? 那個範例用的是感應器 2026-10 以後韌體的新模式,舊韌體讀到的會是別的數字。
- 換回官方 App 後連不上? 主機現在是 Pybricks 韌體:用 SPIKE App 換回樂高原廠韌體。
範例
這個軟體的範例程式還在準備中,會跟產品一起上線;需要的話請先 聯絡我們。
其他問題
- 主機認不到感應器? 拔掉重插一次,等 2 秒;換一個孔試試。官方 App 會把它顯示成「距離感應器(超音波)」,這是正常的。
- 可以同時用官方 App 和 Pybricks 嗎? 一次只能裝一種韌體:Pybricks 與 MBC 積木網站用 Pybricks 韌體,官方 App 用樂高原廠韌體;隨時可以用 SPIKE App 換回原廠韌體。
還有問題?到 聯絡我們 附上你用的軟體和程式截圖。
下載
本頁依據
- 主機與軟體清單:
_build/guides.json - 安裝與設定:
_build/guides/software/spike-pybricks.zh.md、_build/guides/product/servo6/spike-pybricks.zh.md - 範例:
sensors/servo6/spike-examples.md