代码拉取完成,页面将自动刷新
'''
步进电机
型号:28byj-48
from Stepping_motor import SteppingMotor
motor = SteppingMotor(17,18,19,22)
motor.step_angle(360)
'''
'''
步进电机
型号:28byj-48
'''
from machine import Pin
import time
class SteppingMotor:
def __init__(self,in1,in2,in3,in4):
# 引脚初始化
self.in1 = Pin(in1, Pin.OUT)
self.in2 = Pin(in2, Pin.OUT)
self.in3 = Pin(in3, Pin.OUT)
self.in4 = Pin(in4, Pin.OUT)
# 延时
self.delay = 1
# 电机旋转一圈所需的步数,(约360°),会有轻微偏差.
self.ROUND_VALUE = 509
# 四相八拍步进电机顺序值:A-AB-B-BC-C-CD-D-DA-A.
self.STEP_VALUE = [
[1, 0, 0, 0],
[1, 1, 0, 0],
[0, 1, 0, 0],
[0, 1, 1, 0],
[0, 0, 1, 0],
[0, 0, 1, 1],
[0, 0, 0, 1],
[1, 0, 0, 1],
]
# 引脚输出电平低
def reset(self):
self.in1(0)
self.in2(0)
self.in3(0)
self.in4(0)
# 如果count是正整数,则顺时针旋转,如果count是负整数,则逆时针旋转
# 0 - 509 为 0 -360
def step_run(self,count):
STEP_VALUE = self.STEP_VALUE
direction = 1 # 顺时针转
if count < 0:
direction = -1 # 逆时针旋转
count = -count
for x in range(count):
for bit in STEP_VALUE[::direction]:
self.in1(bit[0])
self.in2(bit[1])
self.in3(bit[2])
self.in4(bit[3])
time.sleep_ms(self.delay)
self.reset()
# 如果a是正整数,则顺时针旋转,如果a是负整数,则逆时针旋转
# 在现有位置旋转度数
# a 度数。0- 360 和step_run
def step_angle(self,a):
self.step_run(int(self.ROUND_VALUE * a / 360))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。