关于舵机控制激光点打靶

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DISCIPLINE523

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值