要求:0-100 run()越大速度越快-100--1数值越大速度越小,这个程序应该怎么改

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 方法来控制电机的转速。