Atomic Stepmotor Base
支持以下产品:
UiFlow2 应用示例:
方向控制
在 UiFlow2 上打开 atoms3r_stepmotor_direction_control_example.m5f2 项目。
示例程序演示电机旋转方向控制,按下屏幕按键,切换旋转方向
UiFlow2 代码块:
示例输出:
无
旋转控制
在 UiFlow2 上打开 atoms3r_stepmotor_rotate_control_example.m5f2 项目。
示例程序演示电机连续旋转控制多圈,再反向旋转多圈,等待2秒后重复。
UiFlow2 代码块:
示例输出:
无
MicroPython 应用示例:
方向控制
示例程序演示电机旋转方向控制,按下屏幕按键,切换旋转方向
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 base import AtomicStepmotorBase 9import time 10 11 12title0 = None 13label0 = None 14label_vol = None 15base_stepmotor = None 16direction = None 17 18 19def btn_was_clicked_event(state): 20 global title0, label0, label_vol, base_stepmotor, direction 21 direction = not direction 22 base_stepmotor.set_direction(direction) 23 24 25def setup(): 26 global title0, label0, label_vol, base_stepmotor, direction 27 M5.begin() 28 title0 = Widgets.Title("Steps Ctrl", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18) 29 label0 = Widgets.Label("vol:", 5, 35, 1.0, 0xFFFFFF, 0x000000, Widgets.FONTS.DejaVu18) 30 label_vol = Widgets.Label("12.0V", 43, 35, 1.0, 0xFFFFFF, 0x000000, Widgets.FONTS.DejaVu18) 31 BtnA.setCallback(type=BtnA.CB_TYPE.WAS_CLICKED, cb=btn_was_clicked_event) 32 base_stepmotor = AtomicStepmotorBase(5, 7, 6, 38, 39) 33 label_vol.setText(str((str((base_stepmotor.get_voltage())) + str("V")))) 34 direction = True 35 36 37def loop(): 38 global title0, label0, label_vol, base_stepmotor, direction 39 M5.update() 40 base_stepmotor.step() 41 time.sleep_ms(1) 42 43 44if __name__ == "__main__": 45 try: 46 setup() 47 while True: 48 loop() 49 except (Exception, KeyboardInterrupt) as e: 50 try: 51 from utility import print_error_msg 52 53 print_error_msg(e) 54 except ImportError: 55 print("please update to latest firmware")
示例输出:
无
旋转控制
示例程序演示电机连续旋转控制多圈,再反向旋转多圈,等待2秒后重复。
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 base import AtomicStepmotorBase 9import time 10 11 12title0 = None 13label0 = None 14label_vol = None 15base_stepmotor = None 16step_per_rev = None 17microstep = None 18total_steps = None 19rotate_circle = None 20 21 22def setup(): 23 global \ 24 title0, \ 25 label0, \ 26 label_vol, \ 27 base_stepmotor, \ 28 step_per_rev, \ 29 microstep, \ 30 total_steps, \ 31 rotate_circle 32 33 M5.begin() 34 title0 = Widgets.Title("Steps Ctrl", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18) 35 label0 = Widgets.Label("vol:", 5, 35, 1.0, 0xFFFFFF, 0x000000, Widgets.FONTS.DejaVu18) 36 label_vol = Widgets.Label("12.0V", 43, 35, 1.0, 0xFFFFFF, 0x000000, Widgets.FONTS.DejaVu18) 37 base_stepmotor = AtomicStepmotorBase(5, 7, 6, 38, 39) 38 step_per_rev = 200 39 microstep = 1 / 2 40 rotate_circle = 5 41 total_steps = (step_per_rev / microstep) * rotate_circle 42 label_vol.setText(str((str((base_stepmotor.get_voltage())) + str("V")))) 43 44 45def loop(): 46 global \ 47 title0, \ 48 label0, \ 49 label_vol, \ 50 base_stepmotor, \ 51 step_per_rev, \ 52 microstep, \ 53 total_steps, \ 54 rotate_circle 55 M5.update() 56 print(base_stepmotor.get_voltage()) 57 base_stepmotor.rotate(total_steps, 1, True) 58 time.sleep_ms(100) 59 base_stepmotor.rotate(total_steps, 1, False) 60 time.sleep_ms(100) 61 label_vol.setText(str((str((base_stepmotor.get_voltage())) + str("V")))) 62 time.sleep_ms(2000) 63 64 65if __name__ == "__main__": 66 try: 67 setup() 68 while True: 69 loop() 70 except (Exception, KeyboardInterrupt) as e: 71 try: 72 from utility import print_error_msg 73 74 print_error_msg(e) 75 except ImportError: 76 print("please update to latest firmware")
示例输出:
无
API应用
AtomicStepmotorBase
- class base.stepmotor.AtomicStepmotorBase(en=5, dir=7, stp=6, flt=38, rst=39)
基类:
object创建一个 AtomicStepmotorBase 对象。
- 参数:
UiFlow2 代码块:

MicroPython 代码块:
from base import AtomicStepmotorBase base_stepmotor = AtomicStepmotorBase(en=5, dir=7, stp=6, flt=38, rst=39)
- disable()
禁用电机驱动。
UiFlow2 代码块:

MicroPython 代码块:
base_stepmotor.disable()
- enable()
启用电机驱动。
UiFlow2 代码块:

MicroPython 代码块:
base_stepmotor.enable()
- 返回类型:
None
- get_status()
获取电机驱动状态
- 返回:
正常工作时返回 True,故障时返回 False。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
base_stepmotor.get_status()
- get_voltage()
获取电压
- 返回:
驱动输入电压,单位:V。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
base_stepmotor.get_voltage()
- reset()
复位电机驱动。
UiFlow2 代码块:

MicroPython 代码块:
base_stepmotor.reset()
- 返回类型:
None
- rotate(steps, delay_ms=0, direction=True)
旋转步进电机一定的步数。
实际旋转方向(顺时针或逆时针)取决于电机的接线方式。
UiFlow2 代码块:

MicroPython 代码块:
base_stepmotor.rotate(steps, delay_ms, direction)
- set_direction(direction=True)
设置方向。
- 参数:
direction (bool) – 旋转方向 True 或 False。
- 返回类型:
None
UiFlow2 代码块:

MicroPython 代码块:
base_stepmotor.set_direction(direction)
- step()
电机步进一步
UiFlow2 代码块:

MicroPython 代码块:
base_stepmotor.step()
- 返回类型:
None
- stop()
停止电机。
UiFlow2 代码块:

MicroPython 代码块:
base_stepmotor.stop()
- 返回类型:
None


