motor-shield-pwm.py

# Эта работа лицензирована по лицензии MIT.
# Copyright (c) 2013-2023 OpenMV LLC. All rights reserved.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Пример ШИМ на плате расширения для моторов
#
# Этот пример показывает, как управлять платой расширения для моторов на вашей
# камере OpenMV Cam. Плата расширения для моторов управляется с помощью модуля PYB,
# который позволяет использовать ШИМ для управления скоростью и задавать состояния цифровых выводов
# ввода-вывода. Плате расширения для моторов требуется 6 выводов ввода-вывода для обоих двигателей.

import pyb

# Эти выводы управляют направлением, а другие выводы ШИМ
# ниже управляют скоростью. Направление каждого двигателя
# задаётся 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)

# Создать объект таймера с частотой 1 кГц, который будет питать
# выход ШИМ на вашей камере OpenMV Cam. Нужно создать только один раз.
tim = pyb.Timer(4, freq=1000)

# Использовать объект таймера для создания двух выходов ШИМ на камере OpenMV Cam.
# Эти таймеры управляют скоростью двигателей. Вы будете многократно
# устанавливать процент заполнения ШИМ этих таймеров в цикле.
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 ""