DCMotor Module
这个库是 Module DCMotor 的驱动,该模块使用 I2C 通信。
支持以下产品:
UiFlow2 Example
速度控制
在 UiFlow2 上打开 cores3_dc_motor_module_speed_control.m5f2 项目。
这个案例展示使用 DCMotor Module 控制直流电机的转速,并实时显示电机的编码器值。程序自动调整电机的转速,逐步增加或减少速度,直到达到最大或最小值后反转。
UiFlow2 代码块:
示例输出:
无
MicroPython Example
速度控制
这个案例展示使用 DCMotor Module 控制直流电机的转速,并实时显示电机的编码器值。程序自动调整电机的转速,逐步增加或减少速度,直到达到最大或最小值后反转。
MicroPython 应用示例:
1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD 2# 3# SPDX-License-Identifier: MIT 4 5import os, sys, io 6import M5 7from M5 import * 8from module import DCMotorModule 9import time 10 11 12title0 = None 13label_speed = None 14label_speed_val = None 15label_encoder = None 16label_encoder_value = None 17module_dcmotor_0 = None 18last_time = None 19direction = None 20speed = None 21encoder_value = None 22 23 24def setup(): 25 global \ 26 title0, \ 27 label_speed, \ 28 label_speed_val, \ 29 label_encoder, \ 30 label_encoder_value, \ 31 module_dcmotor_0, \ 32 last_time, \ 33 direction, \ 34 speed, \ 35 encoder_value 36 37 M5.begin() 38 Widgets.fillScreen(0x222222) 39 title0 = Widgets.Title("DCMotor Control", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu24) 40 label_speed = Widgets.Label("Speed:", 5, 60, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu24) 41 label_speed_val = Widgets.Label("0", 105, 60, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu24) 42 label_encoder = Widgets.Label( 43 "Encoder Value:", 5, 100, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu24 44 ) 45 label_encoder_value = Widgets.Label( 46 "0", 203, 100, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu24 47 ) 48 module_dcmotor_0 = DCMotorModule() 49 module_dcmotor_0.clear_encoder(1) 50 direction = True 51 speed = 0 52 53 54def loop(): 55 global \ 56 title0, \ 57 label_speed, \ 58 label_speed_val, \ 59 label_encoder, \ 60 label_encoder_value, \ 61 module_dcmotor_0, \ 62 last_time, \ 63 direction, \ 64 speed, \ 65 encoder_value 66 M5.update() 67 if (time.ticks_diff((time.ticks_ms()), last_time)) > 100: 68 last_time = time.ticks_ms() 69 if direction: 70 speed = speed + 5 71 if speed >= 255: 72 direction = False 73 else: 74 speed = speed - 5 75 if speed <= -255: 76 direction = True 77 module_dcmotor_0.set_motor_speed(1, speed) 78 label_speed_val.setText(str(speed)) 79 encoder_value = module_dcmotor_0.get_encoder(1) 80 label_encoder_value.setText(str(encoder_value)) 81 module_dcmotor_0.clear_encoder(1) 82 83 84if __name__ == "__main__": 85 try: 86 setup() 87 while True: 88 loop() 89 except (Exception, KeyboardInterrupt) as e: 90 try: 91 from utility import print_error_msg 92 93 print_error_msg(e) 94 except ImportError: 95 print("please update to latest firmware")
示例输出:
无
API应用
DCMotorModule
- class module.dc_motor.DCMotorModule
基类:
object创建一个 DCMotorModule 对象。
UiFlow2 代码块:

MicroPython 应用示例:
from module import DCMotorModule dcmotor_module = DCMotorModule()
- set_motor_speed(id, speed)
设置电机转速。
UiFlow2 代码块:

MicroPython 应用示例:
dcmotor_module.set_motor_speed(id, speed)
- set_motor_speed_percent(id, percent)
设置电机速度百分比。
UiFlow2 代码块:

MicroPython 应用示例:
dcmotor_module.set_motor_speed_percent(id, percent)
- get_encoder(id)
获取编码器计数值
UiFlow2 代码块:

MicroPython 应用示例:
dcmotor_module.get_encoder()


