Raspberry pi 伺服器仅在 while 循环 python 中使用变量值时才会移动

问题描述 投票:0回答:1

我是一个使用 GPIO 进行编程的初学者,我正在尝试了解伺服系统。现在有一个代码可以将舵机以 2 为步长移动 180 度。这是在 while 循环中。但是,当我使用相同的命令但在 while 循环之外时,它不执行任何操作,例如servo.ChangDutyCycle(6) 不执行任何操作。在 while 循环中,如果使用常数(例如 4、6、8 等)伺服器不移动,我还需要使用占空比。有人可以解释一下吗?

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(11,GPIO.OUT)
servo = GPIO.PWM(11,50)



servo.start(0)
time.sleep(1)

servo.ChangeDutyCycle(2)
# give no movement
duty = 2

while duty <=12:
        servo.ChangeDutyCycle(duty)
        # using a constant instead of duty result is no movement
        time.sleep(1)
        # time.sleep(0.3)
#         # servo1.ChangeDutyCycle(0)
#         # time.sleep(0.7)
        duty = duty + 2

我发现有人使用 gpiozero 但想使用 GPIO。我无法让我的舵机按照命令反转。认为这与它有关;如果我在 ChangeDutyCycle(常量)中有一个常量,则不会做出反应

python raspberry-pi gpio
1个回答
0
投票

在调用

servo.ChangeDutyCycle(2)
后,如果您想看到效果,您需要在程序中实际延迟一段时间,以便在再次调用
ChangeDutyCycle
之前给舵机时间移动到该位置。舵机不能瞬时移动,因为它们受物理定律控制。

© www.soinside.com 2019 - 2024. All rights reserved.