import RPi.GPIO as GPIO # 导入GPIO模块
import time
class Servo:
Freq = 50
def __init__(self, pin, dc_init):
print("init")
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM) # 选择GPIO编号方式BCM
self.pin = pin 设定管脚
self.DcInit = dc_init # 基准占空比
self.dc_now = dc_init # 当前占空比
GPIO.setup(self.pin, GPIO.OUT) # 配置GPIO为输出模式
self.pwm = GPIO.PWM(self.pin, self.Freq) # 创建舵机PWM实例
self.pwm.start(self.DcInit) # 启用PWM,设定占空比为基准占空比,舵机静止
def run(self, direct, speed, t): # 方向参数1/-1分别表示顺/逆时针转动,速度1~5档依次增大
self.dc_now = 7.5 + 0.5 * speed * direct
self.pwm.ChangeDutyCycle(self.dc_now) # 更改占空比
print(f"start: {self.dc_now}")
time.sleep(t)
self.pwm.ChangeDutyCycle(self.DcInit) # 更改占空比
print("stop")
def back(self):
self.pwm.stop() # 舵机归位
def __del__(self):
GPIO.cleanup()
servo = Servo(23, 7.5)
servo.run(1, 1, 5)
接线图:
