我对树莓皮很陌生。目前,我正在做一个项目,我正在使用raspberry pi 3型号B。我的伺服系统是SG90微伺服系统。我想同时运行两个伺服系统。而且在某种程度上它们是同步的。到目前为止,我已经设法运行两个伺服使用11和13引脚。这是我目前的代码
import RPi.GPIO as GPIO
import time
l = 0
r = 0
lServoPin = 11
rServoPin = 13
GPIO.setmode(GPIO.BOARD)
GPIO.setup(lServoPin, GPIO.OUT)
GPIO.setup(rServoPin, GPIO.OUT)
lPwm = GPIO.PWM(lServoPin, 50)
rPwm = GPIO.PWM(rServoPin, 50)
lPwm.start(5)
rPwm.start(5)
while(l < 5):
for i in range(45, 135):
position = 1./18.*(i)+2
lPwm.ChangeDutyCycle(position)
time.sleep(0.005)
for i in range(135, 45, -1):
position = 1./18.*(i)+2
lPwm.ChangeDutyCycle(position)
time.sleep(0.005)
l = l + 1
lPwm.stop()
while(r < 5):
for i in range(135, 45, -1):
position = 1./18.*(i)+2
rPwm.ChangeDutyCycle(position)
time.sleep(0.005)
for i in range(45, 135):
position = 1./18.*(i)+2
rPwm.ChangeDutyCycle(position)
time.sleep(0.005)
r = r + 1
rPwm.stop()
GPIO.cleanup()上面的代码只一个接一个地运行servos。我在这里做错什么了?有人能建议我一种同时运行两个同步伺服的方法吗?
提前谢谢你!
发布于 2018-06-29 04:44:20
你要做的是,运行两个循环。左运动1例,右侧1例。如果你想把它们一起运行,你需要把这两个马达放在一个回路中。
试试下面的代码:
x=0
while(x<5):
for i in range(45, 135):
positionl = 1./18.*(i)+2
positionr = 1./18.*(180-i)+2
lPwm.ChangeDutyCycle(positionl)
rPwm.ChangeDutyCycle(positionr)
time.sleep(0.005)
for i in range(135, 45, -1):
positionl = 1./18.*(i)+2
positionr = 1./18.*(180-i)+2
lPwm.ChangeDutyCycle(positionl)
rPwm.ChangeDutyCycle(positionr)
time.sleep(0.005)
x = x + 1
lPwm.stop()
rPwm.stop()
GPIO.cleanup()希望这能有所帮助
https://stackoverflow.com/questions/51089138
复制相似问题