MBC Servo6 多路舵機擴充器 × 樂高官方 SPIKE App

樂高官方 SPIKE App:用 Python 控制 Servo6

樂高官方 SPIKE App 的積木只有樂高自己的馬達和感應器,沒有舵機的指令,也讀不到 Servo6 回報的電流和狀態,所以要改用官方 App 的 Python。官方 App 版函式庫的功能名稱跟 Pybricks 版一樣,下面三步就能開始。

1. 下載官方 App 版函式庫

下載 MBC_Servo6_Official_App_Lib.zip,裡面有函式庫 MBC_servo6_SPIKE_App_Lib.py 和範例 servo6_demo.py。注意不要拿到 Pybricks 版(MBC_servo6_Lib.py),兩個不能互換。

2. 新增 Python 專案,把函式庫整份貼在最上面

打開樂高官方 SPIKE App → 新增專案 → 選「Python」(不是 Word Blocks)。官方 App 的專案不能另外放檔案,所以把 MBC_servo6_SPIKE_App_Lib.py 的整份內容貼在程式最上面,再接著寫:

from hub import port
import time
# ↑ 上面先貼 MBC_servo6_SPIKE_App_Lib.py 的整份內容

sv = MBC_SERVO6(port.C)        # 擴充板接主機 C 埠

sv.servo_angle(1, 90)          # 1 號舵機轉到 90 度
time.sleep_ms(1000)
sv.servo_angle(1, 0, 10)       # 每秒 60 度,慢慢轉到 0 度
sv.servo_wait(1)               # 等它轉到
print("1 號電流 mA:", sv.get_current(1))
sv.stop_all()                  # 最後全部放鬆

3. 跟 Pybricks 版不一樣的地方

  1. 建立物件寫 MBC_SERVO6(port.C),括號裡是 port.A ~ port.F,沒有多工的參數。
  2. 每個指令要等主機一個更新週期(大約 20 ~ 50 毫秒)才送得出去,連續控制 6 顆舵機大約要 6 個週期。
  3. 程式結束不會自動放鬆,舵機會停在最後的角度;要放鬆就在程式最後呼叫 stop_all()。
  4. 其他功能(servo_run、servo_release、servo_stall_config、is_stalled、get_total_current…)用法跟 Pybricks 版一樣,每個功能的說明可以看 Pybricks(MicroPython)教學頁,完整列表在 Servo6 官方 SPIKE App 說明。

想用積木?

Servo6 目前只能用 Pybricks 積木拼(主機要裝 Pybricks 韌體 v4.0 以上,積木模式要 Pybricks 授權),或直接寫 Pybricks(MicroPython)。MBC SPIKE 積木網站還沒有 Servo6 的積木。

Servo6 還在上市前的測試階段,官方 App 版函式庫還沒在每一版 App+主機上逐一跑過;有問題請告訴我們。