问题描述
我有一个程序可以激活两个伺服系统。现在,代码激活伺服“A”,然后是伺服“B”,然后在循环中重复此操作。我想添加第三个伺服,伺服“C”,我想设置它,以便它们在“A”和“B”循环两次之后运行。所以顺序是:'A' 'B' 'A' 'B' 'C' 然后它会循环。现在,伺服系统仅以“A”“B”“A”“B”的模式循环运行。我被卡住了,似乎无法弄清楚如何做到这一点。有什么想法吗?
import RPi.GPIO as GPIO
import time
aServoPin = 11
bServoPin = 13
GPIO.setmode(GPIO.BOARD)
GPIO.setup(aServoPin,GPIO.OUT)
GPIO.setup(bServoPin,GPIO.OUT)
aPwm = GPIO.PWM(aServoPin,50)
bPwm = GPIO.PWM(bServoPin,50)
aPwm.start(5)
bPwm.start(5)
while True:
a = 0
b = 0
while(a < 5):
for i in range(45,135):
position = 1./18.*(i)+2
aPwm.ChangeDutyCycle(position)
time.sleep(0.005)
for i in range(135,45,-1):
position = 1./18.*(i)+2
aPwm.ChangeDutyCycle(position)
time.sleep(0.005)
a = a + 1
while(b < 5):
for i in range(135,-1):
position = 1./18.*(i)+2
bPwm.ChangeDutyCycle(position)
time.sleep(0.005)
for i in range(45,135):
position = 1./18.*(i)+2
bPwm.ChangeDutyCycle(position)
time.sleep(0.005)
b = b + 1
time.sleep(1)
aPwm.stop()
bPwm.stop()
GPIO.cleanup()
解决方法
这是你想要的吗?
while True:
a = 0
b = 0
c = 0
loopAB = 0
while(loopAB < 2):
while(a < 5):
for i in range(45,135):
position = 1./18.*(i)+2
aPwm.ChangeDutyCycle(position)
time.sleep(0.005)
for i in range(135,45,-1):
position = 1./18.*(i)+2
aPwm.ChangeDutyCycle(position)
time.sleep(0.005)
a = a + 1
while(b < 5):
for i in range(135,-1):
position = 1./18.*(i)+2
bPwm.ChangeDutyCycle(position)
time.sleep(0.005)
for i in range(45,135):
position = 1./18.*(i)+2
bPwm.ChangeDutyCycle(position)
time.sleep(0.005)
b = b + 1
loopAB += 1
while(c < 5):
# do some things
c = c + 1
time.sleep(1)
aPwm.stop()
bPwm.stop()
GPIO.cleanup()