首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用覆盆子pi同时控制两个伺服电机

利用覆盆子pi同时控制两个伺服电机
EN

Stack Overflow用户
提问于 2018-06-28 18:15:56
回答 1查看 2.3K关注 0票数 0

我对树莓皮很陌生。目前,我正在做一个项目,我正在使用raspberry pi 3型号B。我的伺服系统是SG90微伺服系统。我想同时运行两个伺服系统。而且在某种程度上它们是同步的。到目前为止,我已经设法运行两个伺服使用11和13引脚。这是我目前的代码

代码语言:javascript
复制
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。我在这里做错什么了?有人能建议我一种同时运行两个同步伺服的方法吗?

提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-29 04:44:20

你要做的是,运行两个循环。左运动1例,右侧1例。如果你想把它们一起运行,你需要把这两个马达放在一个回路中。

试试下面的代码:

代码语言:javascript
复制
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()

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51089138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档