要控制舵机(servo motor)在树莓派上移动到不同的角度,您可以使用PWM(脉冲宽度调制)信号。下面是一个示例Python程序,通过 RPi.GPIO 库来实现舵机控制,并将舵机移动到不同的角度。
请注意,您需要将舵机连接到树莓派的一个GPIO引脚,通常使用占空比为5%到10%的PWM信号来控制舵机的位置。不同型号的舵机可能需要不同的PWM参数,因此您可能需要根据您的舵机型号进行微调。
import RPi.GPIO as GPIO
import time
# 设置GPIO模式为BCM
GPIO.setmode(GPIO.BCM)
# 定义舵机连接的GPIO引脚
servo_pin = 18 # 请根据实际硬件连接修改引脚号
# 设置GPIO引脚为输出
GPIO.setup(servo_pin, GPIO.OUT)
# 创建PWM对象,频率设为50 Hz
pwm = GPIO.PWM(servo_pin, 50)
# 启动PWM,初始占空比为5%
pwm.start(5)
try:
while True:
# 输入要设置的角度
angle = float(input("请输入舵机角度 (0-180度): "))
if angle < 0 or angle > 180:
print("无效的角度,请输入0到180度之间的值")
else:
# 将角度映射到占空比范围(通常在2.5%到12.5%之间)
duty_cycle = 2.5 + (angle / 18)
# 设置占空比
pwm.ChangeDutyCycle(duty_cycle)
except KeyboardInterrupt:
print("程序被用户中断")
finally:
# 清理GPIO设置
pwm.stop()
GPIO.cleanup()
在此示例中,我们使用了 PWM 来控制舵机的角度。用户可以通过输入要设置的角度来控制舵机的位置。程序会将角度映射到相应的占空比,并通过PWM信号来控制舵机的位置。请确保根据您的硬件连接修改
servo_pin
的引脚号,并根据您的舵机型号来调整占空比范围,以确保正确的角度控制。