Servo Kit 360°
这是 Servo 360 Unit 的驱动库,用于控制舵机的旋转速度和方向。
支持以下产品:
UiFlow2 应用示例
控制舵机旋转
在 UiFlow2 中打开 cores3_servo360_example.m5f2 项目。
该示例控制舵机的旋转方向和速度。
UiFlow2 代码块:
MicroPython 应用示例
控制舵机旋转
该示例控制舵机的旋转方向和速度。
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 * 8import m5ui 9import lvgl as lv 10from unit import Servo360Unit 11 12 13page0 = None 14label0 = None 15button0 = None 16slider0 = None 17button1 = None 18button2 = None 19servo360_0 = None 20 21 22def button0_short_clicked_event(event_struct): 23 global page0, label0, button0, slider0, button1, button2, servo360_0 24 servo360_0.clockwise(slider0.get_value()) 25 26 27def button1_short_clicked_event(event_struct): 28 global page0, label0, button0, slider0, button1, button2, servo360_0 29 servo360_0.stop() 30 31 32def button2_short_clicked_event(event_struct): 33 global page0, label0, button0, slider0, button1, button2, servo360_0 34 servo360_0.counterclockwise(slider0.get_value()) 35 36 37def button0_event_handler(event_struct): 38 global page0, label0, button0, slider0, button1, button2, servo360_0 39 event = event_struct.code 40 if event == lv.EVENT.SHORT_CLICKED and True: 41 button0_short_clicked_event(event_struct) 42 return 43 44 45def button1_event_handler(event_struct): 46 global page0, label0, button0, slider0, button1, button2, servo360_0 47 event = event_struct.code 48 if event == lv.EVENT.SHORT_CLICKED and True: 49 button1_short_clicked_event(event_struct) 50 return 51 52 53def button2_event_handler(event_struct): 54 global page0, label0, button0, slider0, button1, button2, servo360_0 55 event = event_struct.code 56 if event == lv.EVENT.SHORT_CLICKED and True: 57 button2_short_clicked_event(event_struct) 58 return 59 60 61def setup(): 62 global page0, label0, button0, slider0, button1, button2, servo360_0 63 64 M5.begin() 65 Widgets.setRotation(1) 66 m5ui.init() 67 page0 = m5ui.M5Page(bg_c=0xFFFFFF) 68 label0 = m5ui.M5Label( 69 "speed:", 70 x=136, 71 y=77, 72 text_c=0x000000, 73 bg_c=0xFFFFFF, 74 bg_opa=0, 75 font=lv.font_montserrat_14, 76 parent=page0, 77 ) 78 button0 = m5ui.M5Button( 79 text="CW", 80 x=11, 81 y=202, 82 bg_c=0x2196F3, 83 text_c=0xFFFFFF, 84 font=lv.font_montserrat_14, 85 parent=page0, 86 ) 87 slider0 = m5ui.M5Slider( 88 x=69, 89 y=113, 90 w=180, 91 h=14, 92 mode=lv.slider.MODE.NORMAL, 93 min_value=0, 94 max_value=100, 95 value=50, 96 bg_c=0x2193F3, 97 color=0x2193F3, 98 parent=page0, 99 ) 100 button1 = m5ui.M5Button( 101 text="stop", 102 x=131, 103 y=202, 104 bg_c=0xF32121, 105 text_c=0xFFFFFF, 106 font=lv.font_montserrat_14, 107 parent=page0, 108 ) 109 button2 = m5ui.M5Button( 110 text="CCW", 111 x=245, 112 y=202, 113 bg_c=0x2196F3, 114 text_c=0xFFFFFF, 115 font=lv.font_montserrat_14, 116 parent=page0, 117 ) 118 119 button0.add_event_cb(button0_event_handler, lv.EVENT.ALL, None) 120 button1.add_event_cb(button1_event_handler, lv.EVENT.ALL, None) 121 button2.add_event_cb(button2_event_handler, lv.EVENT.ALL, None) 122 123 page0.screen_load() 124 servo360_0 = Servo360Unit((1, 2)) 125 servo360_0.stop() 126 127 128def loop(): 129 global page0, label0, button0, slider0, button1, button2, servo360_0 130 M5.update() 131 132 133if __name__ == "__main__": 134 try: 135 setup() 136 while True: 137 loop() 138 except (Exception, KeyboardInterrupt) as e: 139 try: 140 m5ui.deinit() 141 from utility import print_error_msg 142 143 print_error_msg(e) 144 except ImportError: 145 print("please update to latest firmware")
API参考
Servo360Unit
- class unit.servo360.Servo360Unit(port=None, pin=0, freq=50, count_low=500, count_high=2500)
基类:
Servo180Unit控制 360 度连续旋转舵机。
备注
对于 Servo Kit 360°,占空比微秒计数用于控制旋转速度与方向:count_low 对应顺时针最大速度,count_high 对应逆时针最大速度,midpoint 值表示停止。取值在 count_low ~ midpoint 范围内时顺时针旋转(值越小速度越快),取值在 midpoint ~ count_high 范围内时逆时针旋转(值越大速度越快)。midpoint 用于控制停止位置。
- 参数:
UiFlow2 代码块:


MicroPython 代码块:
from unit import Servo360Unit servo_0 = Servo360Unit((33, 32)) # Adjust the port as needed servo_1 = Servo360Unit(None, pin=15) # Directly specify the pin
- clockwise(speed, wait=True)
以指定速度使舵机顺时针旋转。
UiFlow2 代码块:

MicroPython 代码块:
servo_0.clockwise(50) # Rotate clockwise at 50% speed
- counterclockwise(speed, wait=True)
以指定速度使舵机逆时针旋转。
UiFlow2 代码块:

MicroPython 代码块:
servo_0.counterclockwise(50) # Rotate counterclockwise at 50% speed


