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

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

MicroPython 代码块:
base_stepmotor.enable()
- 返回类型:
None
- disable()
禁用电机驱动。
UiFlow2 代码块:

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

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

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

MicroPython 代码块:
base_stepmotor.rotate(steps, delay_ms, direction)
- stop()
停止电机。
UiFlow2 代码块:

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

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

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



