import time
import pyb
# 初始化舵机
servo1 = pyb.Servo(1) # 第一个舵机引脚
servo2 = pyb.Servo(2) # 第二个舵机引脚
servo1.calibration(500, 2500, 0)
servo2.calibration(500, 2500, 0)
# 设置舵机复位参数
reset_angle1 = 127 # 第一个舵机复位角度
reset_angle2 = 145 # 第二个舵机复位角度
reset_duration = 1000 # 复位时长,单位为毫秒
# 舵机复位函数
def servo1_reset():
servo1.angle(reset_angle1) # 将第一个舵机转动到复位角度
def servo2_reset():
servo2.angle(reset_angle2) # 将第二个舵机转动到复位角度
# 执行舵机复位操作
servo1_reset()
servo2_reset()
time.sleep_ms(reset_duration) # 等待舵机复位完成
# 插值函数
def interpolate(start_angle, end_angle, steps, delay_ms):
step_size = (end_angle - start_angle) / steps
for i in range(steps + 1):
angle = start_angle + i * step_size
servo1.angle(int(angle)) # 控制舵机1角度
servo2.angle(int(angle)) # 控制舵机2角度
time.sleep_ms(delay_ms)
# 主循环
while True:
# 在此添加你的其他代码逻辑
# 可以根据需要进行条件判断、舵机控制等操作
k1 = pyb.Pin('P1', pyb.Pin.IN, pull=pyb.Pin.PULL_UP)
k2 = pyb.Pin('P2', pyb.Pin.IN, pull=pyb.Pin.PULL_UP)
k3 = pyb.Pin('P3', pyb.Pin.IN, pull=pyb.Pin.PULL_UP)
if k1.value() == 0: # 按钮1被按下
servo1_reset()
servo2_reset()
if k2.value() == 0: # 按钮2被按下
time.sleep_ms(1000)
interpolate(reset_angle1, 115, 10, 50)
time.sleep_ms(900)
interpolate(reset_angle2, 132, 10, 50)
interpolate(115, 117, 10, 50)
time.sleep_ms(1000)
interpolate(132, 132, 10, 50)
time.sleep_ms(1000)
interpolate(117, 140, 10, 50)
time.sleep_ms(1000)
interpolate(132, 156, 10, 50)
time.sleep_ms(1000)
interpolate(140, 116, 10, 50)
time.sleep_ms(1000)
interpolate(156, 132, 10, 50)
interpolate(116, 117, 10, 50)
time.sleep_ms(1000)
if k3.value() == 0: # 按钮3被按下
time.sleep_ms(1000)
interpolate(reset_angle1, 141, 10, 50)
time.sleep_ms(500)
interpolate(reset_angle2, 155, 10, 50)
time.sleep_ms(1000)
interpolate(141, 129, 10, 50)
time.sleep_ms(1000)
interpolate(155, 143, 10, 50)
time.sleep_ms(1000)
interpolate(129, 141, 10, 50)
time.sleep_ms(1000)
interpolate(141, 155, 10, 50)
time.sleep_ms(1000)
else:
# 如果没有按钮被按下,将舵机复位
servo1_reset()
servo2_reset()