今天讲解一下如何使用OpenMV本身来控制三个舵机(借助传感器扩展板)
对于OpenMV或OpenMV4而言,我们可以使用P7P8P9三个PWM引脚来通过PWM来实现对舵机的控制,对于OpenMV2而言,只能使用P7或P8来实现两个舵机的控制,
我们可以通过控制PWM的占空比来控制舵机的速度,或是直接控制舵机转动到某个角度,如sevor.angle(90)控制舵机转到90°的位置
关于舵机的供电,我们推荐使用四节1.2V的镍氢电池(每节电池电压为1.2V)
单个舵机转动
# 从pyb导入Servo
from pyb import Servo
s1 = Servo(1) # 设置s1=Servo(1)来控制第1个舵机(P7)
while(1):
s1.angle(45) # 让第 1 个舵机转动到45°的位置
# 设置延迟
time.sleep(100) # 延迟10ms
s1.angle(-60, 1500) # 在 1500ms 内转动到 -60°
time.sleep(100 # 延迟100ms
s1.speed(50) # 设置舵机的速度为50
# 通常速度的设置是运用在"360°的舵机"上,因为其可以连续地转动
- Servo(1) -> P7 (PD12)
- Servo(2) -> P8 (PD13)
OpenMV3 M7 / OpenMV4 H7上增加:
- Servo(3) -> P9 (PD14)
OpenMV4 H7 Plus P9不能使用PWM
多个舵机转动
和单个同理,定义多个舵机即可s1 = Servo(1) s2 = Servo(2)
# 从pyb导入Servo
from pyb import Servo
s1 = Servo(1) # 设置s1=Servo(1)来控制第1个舵机(P7)
s2 = Servo(2) # 设置s2=Servo(2)来控制第2个舵机(P8)
s3 = Servo(3) # 设置s3=Servo(3)来控制第3个舵机(P9)
while(1):
s1.angle(45) # 让第 1 个舵机转动到45°的位置
# 设置延迟
time.sleep(100) # 延迟10ms
s1.angle(-60, 1500) # 在 1500ms 内转动到 -60°
time.sleep(100 # 延迟100ms
s2.angle(45) # 让第 2 个舵机转动到45°的位置
# 设置延迟
time.sleep(100) # 延迟10ms
s2.angle(-60, 1500) # 在 1500ms 内转动到 -60°
time.sleep(100 # 延迟100ms
s3.angle(45) # 让第 3 个舵机转动到45°的位置
# 设置延迟
time.sleep(100) # 延迟10ms
s3.angle(-60, 1500) # 在 1500ms 内转动到 -60°
time.sleep(100 # 延迟100ms