k230控制42步进电机

01studio的k230到手几天了,用来学习一下实现个人的一些小想法。
如题:k230+42步进电机(带闭环驱动)实现按键控制正反转。
‘’’
实验名称:PWM与按键控制控制42步进电机
版本:v1.0
作者:01Studio
实验平台:01Studio CanMV K230
说明:通过按键控制42步进电机的正反转,并在每次按下按键时改变方向,持续输出脉冲信号以实现360度转动。
‘’’

from machine import Pin, PWM
from machine import FPIOA
import time

配置引脚42为PWM0功能(step脉冲)

fpioa = FPIOA()
fpioa.set_function(42, FPIOA.PWM0)

配置引脚43为PWM1功能(dir方向)

fpioa.set_function(43, FPIOA.PWM1)

构建步进电机PWM对象,通道0,频率为2000Hz,占空比为50%,默认使能输出

Step = PWM(0, 2000, 50, enable=True)

构建方向控制PWM对象,通道1,频率为2000Hz,占空比为50%,默认使能输出

Dir = PWM(1, 1, 50, enable=True)

将GPIO52、GPIO21配置为普通GPIO模式

fpioa.set_function(52, FPIOA.GPIO52) # LED
fpioa.set_function(21, FPIOA.GPIO21) # KEY

LED = Pin(52, Pin.OUT) # 构建LED对象, 开始熄灭
KEY = Pin(21, Pin.IN, Pin.PULL_UP) # 构建KEY对象

state = 0 # LED引脚状态
direction = True # 步进电机方向

while True:
if KEY.value() == 0: # 按键被按下
time.sleep_ms(10) # 消除抖动
if KEY.value() == 0: # 确认按键被按下
state = not state # 使用not语句而非~语句
LED.value(state) # LED状态翻转
print(‘KEY’)

        # 改变步进电机方向
        direction = not direction
        Dir.duty(50 if direction else 0)  # 设置方向

        while not KEY.value():  # 检测按键是否松开
            pass

# 持续输出脉冲信号以实现360度转动
Step.freq(2000)
time.sleep_ms(10)  # 控制转动速度

每按一次KEY键,42步进电机改变一下转动方向,同时LED随动。
简单记录一下,望大佬指正完善。

untitled_1.py (1.7 KB)