【发布时间】:2016-09-26 08:24:45
【问题描述】:
所以我正在使用 Raspberry Pi 做一个涉及移动伺服电机的小项目。在 Python 3 中的以下代码中,我首先在大约 45 度处启动伺服。在后面的代码中,根据之前的角度确定了不同的角度,并改变了占空比。
def main():
#Import functions
import measure, move
import time
import RPi.GPIO as GPIO
#Declare Variables
Servo_pin = 35
angle = 45
freq = 50
#Setup board
GPIO.setmode(GPIO.BOARD)
GPIO.setup(Servo_pin, GPIO.OUT)
servo = GPIO.PWM(Servo_pin,freq)
#Determine Duty Cycle
dc = 1/18 * (angle) + 2
print("Starting Duty Cycle: ",dc)
#Start servo
servo.start(dc)
i = 1
#Determine angle based on previous angle
while True:
if (i == 0):
angle = 45
elif (i == 1):
angle = 90
elif (i == 2):
angle = 180
elif (i > 2):
angle = 45
i = 0
i = i+1
#Change servo's position
#Convert angle to Duty Cycle
dc = 1/18 * (angle) + 2
print("Setting Duty Cycle: ",dc)
#Change position
servo.ChangeDutyCycle(dc)
#Give servo time to finish moving
time.sleep(0.3)
main()
我已将伺服器连接到电池组(4 节 AA 电池),但伺服器不会随此代码移动。现在,我承认我是一个初学者,这可能真的很容易,如果是这样,我提前道歉。
感谢任何帮助!
【问题讨论】:
-
我没有使用 rasp-pi 的经验,但是只要按照代码,你有没有看到输出
Starting Duty Cycle:? -
@downshift 是的,只有在初始程序启动后。 startServo 函数只能被调用一次来启动伺服。
-
此视频可能会有所帮助或建议检查Servo control using Raspberry Pi.
标签: python python-3.x raspberry-pi servo