首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带蓝牙的Pi上的振动伺服

带蓝牙的Pi上的振动伺服
EN

Stack Overflow用户
提问于 2016-03-27 18:55:19
回答 1查看 98关注 0票数 0

作为一个新手,我正在测试我的Pi2B与微型伺服SG90连接。我正在运行下面的代码。它工作得很好,但它不能稳定地保持左右位置,有很小的振动。我的Pi有一个蓝牙鼠标,当我使用它时,伺服系统开始剧烈抖动。我怎样才能防止这种行为?

我使用一个外部电源为伺服,但删除它和伺服由Pi供电并不能解决问题。为Pi使用另一个usb充电器也不会。从Pi上移除蓝牙适配器并不能阻止微小的振动。

代码语言:javascript
复制
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)

p = GPIO.PWM(17, 50)
p.start(6.55)

for i in range(1000):

    p.ChangeDutyCycle(6.55)
    time.sleep(3)
    p.ChangeDutyCycle(6.85)
    time.sleep(3)

p.stop()
GPIO.cleanup()
EN

回答 1

Stack Overflow用户

发布于 2017-02-01 09:44:32

伺服系统需要使用硬件定时PWM。

尝试使用PiGPIO

示例复制和修改自:https://raspberrypiwonderland.wordpress.com/2014/02/19/servo-test/

代码语言:javascript
复制
import time
import pigpio

servos = 4 #GPIO number

pigpio.start()
#pulsewidth can only set between 500-2500
try:
    while True:
        pigpio.set_servo_pulsewidth(servos, 500) #0 degree
        print("Servo {} {} micro pulses".format(servos, 1000))
        time.sleep(1)
        pigpio.set_servo_pulsewidth(servos, 1500) #90 degree
        print("Servo {} {} micro pulses".format(servos, 1500))
        time.sleep(1)
        pigpio.set_servo_pulsewidth(servos, 2500) #180 degree
        print("Servo {} {} micro pulses".format(servos, 2000))
        time.sleep(1)
        pigpio.set_servo_pulsewidth(servos, 1500)
        print("Servo {} {} micro pulses".format(servos, 1500))
        time.sleep(1)

# switch all servos off
except KeyboardInterrupt:
    pigpio.set_servo_pulsewidth(servos, 0);

pigpio.stop()

下面是这个库http://abyz.co.uk/rpi/pigpio/python.html#set_servo_pulsewidth的指南

您可能需要根据您的设置移动伺服信号连接或更改GPIO引脚设置。

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

https://stackoverflow.com/questions/36246539

复制
相关文章

相似问题

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