DCMotor 模块

这个库是 Module DCMotor 的驱动,该模块使用 I2C 通信。

支持以下产品:

Module DCMotor

UiFlow2 应用示例

速度控制

在 UiFlow2 上打开 cores3_dc_motor_module_speed_control.m5f2 项目。

这个案例展示使用 DCMotor Module 控制直流电机的转速,并实时显示电机的编码器值。程序自动调整电机的转速,逐步增加或减少速度,直到达到最大或最小值后反转。

UiFlow2 代码块:

cores3_dc_motor_module_speed_control.png

示例输出:

MicroPython 应用示例

速度控制

这个案例展示使用 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 代码块:

init.png

MicroPython 应用示例:

from module import DCMotorModule

dcmotor_module = DCMotorModule()
set_motor_speed(id, speed)

设置电机转速。

参数:
  • id (int) – 端口号:范围:1~4。

  • speed (int) – 电机转速,范围:-255~255。

返回类型:

None

UiFlow2 代码块:

set_motor_speed.png

MicroPython 应用示例:

dcmotor_module.set_motor_speed(id, speed)
set_motor_speed_percent(id, percent)

设置电机速度百分比。

参数:
  • id (int) – 端口号,范围:1~4。

  • percent (float) – 电机速度百分比,范围:-100.0% ~ +100.0%

返回类型:

None

UiFlow2 代码块:

set_motor_speed_percent.png

MicroPython 应用示例:

dcmotor_module.set_motor_speed_percent(id, percent)
get_encoder(id)

获取编码器计数值

参数:

id (int) – 端口号,范围:1~4。

返回:

编码器计数值。

返回类型:

int

UiFlow2 代码块:

get_encoder.png

MicroPython 应用示例:

dcmotor_module.get_encoder()
clear_encoder(id)

清空编码器计数值

UiFlow2 代码块:

clear_encoder.png

MicroPython 应用示例:

dcmotor_module.clear_encoder()
参数:

id (int)

返回类型:

bool