Example: 50-OpenMV-Boards/60-Shields/64-Motor-Shield/motor-shield-pwm.py

# 本作品采用MIT许可证授权。
# 版权所有 (c) 2013-2023 OpenMV LLC。保留所有权利。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# 电机驱动板PWM示例
#
# 此示例展示了如何控制您的
# OpenMV Cam上的电机驱动板。电机驱动板通过使用PYB模块进行控制。
# 它允许你使用PWM来控制速度并设置数字I/O引脚
# 状态。电机扩展板需要6个I/O引脚来控制两个电机。

import pyb

# 这些引脚控制方向,而其他PWM引脚
# 则控制速度。每个电机的方向
# 由H桥设置,其中A0/1是一个H桥驱动器的两侧。
# B0/1是另一个H桥。
pinADir0 = pyb.Pin("P3", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)
pinADir1 = pyb.Pin("P2", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)
pinBDir0 = pyb.Pin("P1", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)
pinBDir1 = pyb.Pin("P0", pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)

# Dir0/1必须不相等才能实现前进或后退
# 操作。如果它们相等,则是刹车操作。
# 如果它们不相等,则电机会根据其连接方式和dir 0的值
# 朝一个方向或另一个方向旋转。
pinADir0.value(0)
pinADir1.value(1)

# Dir0/1必须不相等才能实现前进或后退
# 操作。如果它们相等,则是刹车操作。
# 如果它们不相等,则电机会根据其连接方式和dir 0的值
# 朝一个方向或另一个方向旋转。
pinBDir0.value(0)
pinBDir1.value(1)

# 创建一个以1KHz运行的定时器对象,它将为
# 我们的OpenMV Cam上的PWM输出供电。只需创建一次。
tim = pyb.Timer(4, freq=1000)

# 使用定时器对象在OpenMV Cam上创建两个PWM输出。
# 这些定时器控制电机的速度。你将在循环中
# 反复设置这些定时器的PWM百分比。
chA = tim.channel(1, pyb.Timer.PWM, pin=pyb.Pin("P7"))
chB = tim.channel(2, pyb.Timer.PWM, pin=pyb.Pin("P8"))

while True:
    for i in range(100):
        pyb.delay(100)
        chA.pulse_width_percent(i)
        chB.pulse_width_percent(99 - i)

    for i in range(100):
        pyb.delay(100)
        chA.pulse_width_percent(99 - i)
        chB.pulse_width_percent(i)

results matching ""

    No results matching ""