from pyb import Pin, Timer
inverse_left=False
inverse_right=False
ain1 = Pin('P0', Pin.OUT_PP)
bin1 = Pin('P1', Pin.OUT_PP)
ain1.high()
bin1.low()
pwma = Pin('P7')
pwmb = Pin('P8')
tim = Timer(4, freq=1000)
ch1 = tim.channel(1, Timer.PWM, pin=pwma, pulse_width_percent=0)
ch2 = tim.channel(2, Timer.PWM, pin=pwmb, pulse_width_percent=0)
def run(left_speed, right_speed):
if inverse_left==True:
left_speed=(-left_speed)
if inverse_right==True:
right_speed=(-right_speed)
if left_speed < 0:
ain1.high()
else:
ain1.low()
ch1.pulse_width_percent(int(abs(left_speed)))
if right_speed < 0:
bin1.high()
else:
bin1.low()
ch2.pulse_width_percent(int(abs(right_speed)))
可以将速度值进行映射,使得输入的数值越大,对应的速度越小,具体的实现可以使用如下代码:
def run(left_speed, right_speed):
if inverse_left:
left_speed = -left_speed
if inverse_right:
right_speed = -right_speed
left_speed = 100 - left_speed
right_speed = 100 - right_speed
left_speed = max(0, min(100, left_speed))
right_speed = max(0, min(100, right_speed))
if left_speed < 50:
ain1.high()
else:
ain1.low()
ch1.pulse_width_percent(int(left_speed))
if right_speed < 50:
bin1.high()
else:
bin1.low()
ch2.pulse_width_percent(int(right_speed))
在这个代码中,我们首先将输入的速度值进行映射,将输入的数值越大,对应的速度越小。然后我们使用了一个 if-else 语句来控制电机的转动方向。最后我们将速度值转化为整数,并通过 pulse_width_percent 方法来控制电机的转速。