OpenMV控制小车运动中的舵机转向问题
-
from pyb import Pin, Timer # Servo Control Example # # This example shows how to use your OpenMV Cam to control servos. import time from pyb import Servo s1 = Servo(3) # P9 while (True) : s1.angle(3)
上述代码可以正常通过P9口来控制舵机转向。
from pyb import Pin, Timer # Servo Control Example # # This example shows how to use your OpenMV Cam to control servos. inverse_left=False #change it to True to inverse left wheel inverse_right=False #change it to True to inverse right wheel ain1 = Pin('P0', Pin.OUT_PP) ain2 = Pin('P1', Pin.OUT_PP) bin1 = Pin('P2', Pin.OUT_PP) bin2 = Pin('P3', Pin.OUT_PP) ain1.low() ain2.low() bin1.low() bin2.low() pwma = Pin('P7') pwmb = Pin('P8') tim = Timer(4, freq=10000) ch1 = tim.channel(1, Timer.PWM, pin=pwma) ch2 = tim.channel(2, Timer.PWM, pin=pwmb) ch1.pulse_width_percent(0) ch2.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.low() ain2.high() else: ain1.high() ain2.low() ch1.pulse_width_percent(abs(left_speed)) if right_speed < 0: bin1.low() bin2.high() else: bin1.high() bin2.low() ch2.pulse_width_percent(abs(right_speed)) while (True) : run(25,25)
上述代码可通过TB622A16612FNG芯片来控制小车电机转速。(P7P8两口来输出PWM)
一但讲上述两段代码组合到一起,仍可通过run()函数控制电机转速,但无法控制舵机转向。组合后的代码如下:from pyb import Pin, Timer # Servo Control Example # # This example shows how to use your OpenMV Cam to control servos. import time from pyb import Servo s1 = Servo(3) # P7 inverse_left=False #change it to True to inverse left wheel inverse_right=False #change it to True to inverse right wheel ain1 = Pin('P0', Pin.OUT_PP) ain2 = Pin('P1', Pin.OUT_PP) bin1 = Pin('P2', Pin.OUT_PP) bin2 = Pin('P3', Pin.OUT_PP) ain1.low() ain2.low() bin1.low() bin2.low() pwma = Pin('P7') pwmb = Pin('P8') tim = Timer(4, freq=10000) ch1 = tim.channel(1, Timer.PWM, pin=pwma) ch2 = tim.channel(2, Timer.PWM, pin=pwmb) ch1.pulse_width_percent(0) ch2.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.low() ain2.high() else: ain1.high() ain2.low() ch1.pulse_width_percent(abs(left_speed)) if right_speed < 0: bin1.low() bin2.high() else: bin1.high() bin2.low() ch2.pulse_width_percent(abs(right_speed)) while (True) : run(50,50) s1.angle(30)
求解答
-
s1 = Servo(3) # P7
pwma = Pin('P7')
引脚冲突了
-
好像没有,我是注释写错了,s1=Servo(3)对应的是P9口吧