motor-shield-pwm.py

# Esta obra está licenciada bajo la licencia MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Todos los derechos reservados.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Ejemplo de PWM con Motor Shield
#
# Este ejemplo muestra cómo controlar el motor shield de su
# OpenMV Cam. El motor shield se controla usando el módulo PYB,
# que le permite hacer PWM para controlar la velocidad y establecer estados
# de pines de E/S digitales. El motor shield necesita 6 pines de E/S para ambos motores.

import pyb

# Estos pines controlan la dirección, mientras que los otros pines PWM
# de abajo controlan la velocidad. La dirección de cada motor
# se establece mediante un puente H donde A0/1 son los dos lados de
# un controlador de puente H. B0/1 son otro puente 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 deben ser distintos entre sí para el funcionamiento hacia adelante o hacia atrás,
# si son iguales, se trata de una operación de frenado.
# Si no son iguales, el motor girará en un sentido u otro
# dependiendo de su conexión y del valor de dir 0.
pinADir0.value(0)
pinADir1.value(1)

# Dir0/1 deben ser distintos entre sí para el funcionamiento hacia adelante o hacia atrás,
# si son iguales, se trata de una operación de frenado.
# Si no son iguales, el motor girará en un sentido u otro
# dependiendo de su conexión y del valor de dir 0.
pinBDir0.value(0)
pinBDir1.value(1)

# Crea un objeto timer que funciona a 1KHz y que alimentará
# la salida PWM de su OpenMV Cam. Solo hay que crearlo una vez.
tim = pyb.Timer(4, freq=1000)

# Usa el objeto timer para crear dos salidas PWM en la OpenMV Cam.
# Estos timers controlan la velocidad de los motores. Establecerá
# el porcentaje de PWM de estos timers repetidamente en su bucle.
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 ""