前言:K210 官网实例代码真的很少,不像openmv一样有很多视觉小车循迹,云台跟踪小球是示例,因此我基于openmv的实例代码,使用K210实现与openmv云台追踪物体一样的功能。
下面是是第一部分内容:实现驱动舵机的教程
---K210驱动舵机代码详细教程---
二维云台:就是用俩个舵机拼装起来的东西(之后更新K210关于云台跟踪物体需要的东西)
想学习K210视觉云台跟踪物体的兄弟可以关注我,后续更新其内容教程
示例代码:
from machine import Timer, PWM
# 创建 Timer 对象
tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
# 创建 PWM 对象,设置频率为 50Hz,初始占空比为 0,连接到引脚 6
servo = PWM(tim, freq=50, duty=0, pin=6)
# 控制舵机转动到特定角度
# angle 参数为角度值,范围通常是 0-180
def set_servo_angle(angle):
# 转换角度到占空比
duty = (angle + 90) / 180 * 10 + 2.5
servo.duty(duty)
# 设置舵机角度为 90 度
set_servo_angle(-45)
解析:
from machine import Timer, PWM
导入 machine
模块中的 Timer
和 PWM
类,用于生成 PWM 信号
tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
- 创建一个
Timer
对象,用于产生 PWM 信号。 Timer.TIMER0
表示使用定时器 0。Timer.CHANNEL0
表示使用通道 0。mode=Timer.MODE_PWM
设置模式为 PWM
servo = PWM(tim, freq=50, duty=0, pin=17)
- 使用
Timer
对象创建一个PWM
对象。 freq=50
设置 PWM 频率为 50Hz,这是舵机控制的常用频率。duty=0
设置初始占空比为 0。pin=17
将 PWM 信号连接到引脚 17。
def set_servo_angle(angle):
# 转换角度到占空比
duty = (angle + 90) / 180 * 10 + 2.5
servo.duty(int(duty)) # 确保占空比为有效值
set_servo_angle
函数接受一个角度参数angle
,范围通常是 0-180。- 占空比的计算公式是:(角度+90)/180×10+2.5(角度+90)/180×10+2.5。
- 这个公式是基于 1ms 的脉冲宽度,其中 0.5ms 对应 -90 度,2.5ms 对应 +90 度。
- 将角度转换为占空比,其中 0 度对应 0.5ms,180 度对应 2.5ms。
servo.duty(int(duty))
设置 PWM 占空比,确保占空比为有效值。
set_servo_angle(90)
- 调用
set_servo_angle
函数,将舵机角度设置为 90 度。
注意:
- 引脚连接:确保舵机连接到 Maix Bit 的正确引脚(在这个例子中是引脚 6)。
- 供电:舵机通常需要外部电源供电(5V供电),不要通过 Maix Bit 的 USB 供电,以免损坏开发板。
- 占空比范围:确保占空比在 0 到 100 之间
最后烧录到板子上,发现舵机是可以动的(-90°~90°)
总结:以上是K210 驱动舵机代码解析教程,后续更新如何使用K210实现云台跟踪物体。