Servo2 Module
Servo2 是 M5Stack 可堆叠模块系列中的舵机驱动模块。采用 PCA9685 16 通道 PWM 控制器,可同时驱动最多 16 路舵机。供电为 6–12 V 直流,使用两片 SY8368AQQC 进行降压。
支持以下产品:
UiFlow2 应用示例
舵机角度控制
在 UiFlow2 中打开 m5core_module_servo2_example.m5f2 项目。
本示例在 I2C 总线上初始化 Servo2 模块,驱动两路舵机并在屏幕上显示当前角度。按键 A 将两路舵机设为 0°,按键 B 设为 45°,按键 C 设为 90°;初始化后释放一路通道。
UiFlow2 代码块:
示例输出:
None
MicroPython 应用示例
舵机角度控制
本示例在 I2C 总线上初始化 Servo2 模块,驱动两路舵机并在屏幕上显示当前角度。按键 A 将两路舵机设为 0°,按键 B 设为 45°,按键 C 设为 90°;初始化后释放一路通道。
MicroPython 代码块:
1# SPDX-FileCopyrightText: 2026 M5Stack Technology CO LTD 2# 3# SPDX-License-Identifier: MIT 4 5import os, sys, io 6import M5 7from M5 import * 8from module import Servo2Module 9 10 11 12title = None 13label_angle = None 14servo2_0 = None 15angle = None 16 17 18def btna_was_clicked_event(state): 19 global title, label_angle, servo2_0, angle 20 angle = 0 21 label_angle.setText(str((str('Angle: ') + str(angle)))) 22 servo2_0.position(1, degrees=angle) 23 servo2_0.position(2, degrees=angle) 24 25 26def btnb_was_clicked_event(state): 27 global title, label_angle, servo2_0, angle 28 angle = 45 29 label_angle.setText(str((str('Angle: ') + str(angle)))) 30 servo2_0.position(1, degrees=angle) 31 servo2_0.position(2, degrees=angle) 32 33 34def btnc_was_clicked_event(state): 35 global title, label_angle, servo2_0, angle 36 angle = 90 37 label_angle.setText(str((str('Angle: ') + str(angle)))) 38 servo2_0.position(1, degrees=angle) 39 servo2_0.position(2, degrees=angle) 40 41 42def setup(): 43 global title, label_angle, servo2_0, angle 44 45 M5.begin() 46 Widgets.setRotation(1) 47 Widgets.fillScreen(0x222222) 48 title = Widgets.Title("Module Servo2 Example", 3, 0xffffff, 0x0000FF, Widgets.FONTS.DejaVu24) 49 label_angle = Widgets.Label("Angle: ", 46, 98, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu24) 50 51 BtnA.setCallback(type=BtnA.CB_TYPE.WAS_CLICKED, cb=btna_was_clicked_event) 52 BtnB.setCallback(type=BtnB.CB_TYPE.WAS_CLICKED, cb=btnb_was_clicked_event) 53 BtnC.setCallback(type=BtnC.CB_TYPE.WAS_CLICKED, cb=btnc_was_clicked_event) 54 55 servo2_0 = Servo2Module(0x40, 50, 400, 2350, 180) 56 angle = 0 57 label_angle.setText(str((str('Angle: ') + str(angle)))) 58 servo2_0.position(1, degrees=angle) 59 servo2_0.position(2, degrees=angle) 60 servo2_0.release(0) 61 62 63def loop(): 64 global title, label_angle, servo2_0, angle 65 M5.update() 66 67 68if __name__ == '__main__': 69 try: 70 setup() 71 while True: 72 loop() 73 except (Exception, KeyboardInterrupt) as e: 74 try: 75 from utility import print_error_msg 76 print_error_msg(e) 77 except ImportError: 78 print("please update to latest firmware")
示例输出:
None
API
Servo2Module
- class module.Servo2Module(address=0x40, freq=50, min_us=400, max_us=2350, degrees=180)
在 I2C 总线上创建 Servo2 模块实例。
- 参数:
UiFlow2 代码块:

MicroPython 代码块:
from module import Servo2Module servo2 = Servo2Module(address=0x40, freq=50, min_us=400, max_us=2350, degrees=180)
- position(index, degrees=None, radians=None, us=None, duty=None)
设置指定通道的舵机角度。
- 参数:
UiFlow2 代码块:




MicroPython 代码块:
servo2.position(0, degrees=90) servo2.position(0, duty=50) servo2.position(0, us=1500) servo2.position(0, radians=1.57)
- release(index)
释放舵机(停止驱动该通道)。
- 参数:
index (int) – 通道索引(0–15)。
UiFlow2 代码块:

MicroPython 代码块:
servo2.release(0)
- deinit()
释放模块。Servo2Module 中为空实现,仅用于兼容。
MicroPython 代码块:
servo2.deinit()

