Nota
¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 junto a otros entusiastas.
¿Por qué unirse?
Soporte Experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
Aprende y Comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.
Avances Exclusivos: Accede anticipadamente a anuncios de nuevos productos y adelantos exclusivos.
Descuentos Especiales: Aprovecha descuentos exclusivos en nuestros productos más recientes.
Promociones Festivas y Sorteos: Participa en sorteos y promociones especiales.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.
1.3.1 Motor
Introducción
En este proyecto, aprenderemos a usar el L293D para controlar un motor de corriente continua (DC) y hacerlo girar en sentido horario y antihorario. Dado que el motor de corriente continua requiere una corriente más alta, usaremos el Módulo de Alimentación para proporcionar energía de manera segura al motor.
Componentes Necesarios
Para este proyecto, necesitamos los siguientes componentes.

Diagrama de Conexiones

Procedimientos del Experimento
Paso 1: Construye el circuito.

Nota
El módulo de alimentación puede usar una batería de 9V con el conector para batería de 9V incluido en el kit. Inserta el capuchón del módulo de alimentación en las tiras de bus de 5V de la protoboard.

Paso 2: Ve al directorio del código.
cd ~/davinci-kit-for-raspberry-pi/python-pi5
Paso 3: Ejecuta el código.
sudo python3 1.3.1_Motor.py
Al ejecutar el código, el motor primero gira en sentido horario durante 5 segundos, luego se detiene durante 5 segundos, después gira en sentido antihorario durante 5 segundos y posteriormente se detiene nuevamente por 5 segundos. Esta serie de acciones se repetirá continuamente.
Advertencia
Si aparece el mensaje de error RuntimeError: Cannot determine SOC peripheral base address
, consulta Si gpiozero no funciona.
Código
Nota
Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Antes de eso, asegúrate de estar en la ruta del código fuente, como davinci-kit-for-raspberry-pi/python-pi5
. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.
#!/usr/bin/env python3
from gpiozero import Motor
from time import sleep
# Inicializa el Motor con GPIO Zero, especificando los pines GPIO para control de avance (17), retroceso (27) y habilitación (22)
motor = Motor(forward=17, backward=27, enable=22)
try:
# Función principal para controlar la dirección y movimiento del motor.
# Alterna la rotación del motor entre horario y antihorario con pausas intermedias.
actions = {'CW': motor.forward, 'CCW': motor.backward, 'STOP': motor.stop} # Define las acciones del motor para facilitar la lectura
while True:
# Recorre las acciones definidas para controlar la dirección del motor
for action in ['CW', 'STOP', 'CCW', 'STOP']:
actions[action]() # Ejecuta la acción actual (avanzar, parar, retroceder, parar)
print(f"{action}") # Muestra la acción actual en la consola
sleep(5) # Pausa de 5 segundos antes de proceder a la siguiente acción
except KeyboardInterrupt:
# Maneja de forma segura una interrupción de teclado (Ctrl+C) para detener el programa
pass
Explicación del Código
Estas declaraciones de importación incorporan la clase
Motor
de la libreríagpiozero
y la funciónsleep
del módulotime
para manejar pausas.#!/usr/bin/env python3 from gpiozero import Motor from time import sleep
Esta línea inicializa un objeto
Motor
, especificando los pines GPIO para el control de avance (17), retroceso (27) y habilitación (22).# Inicializa el Motor con GPIO Zero, especificando los pines GPIO para control de avance (17), retroceso (27) y habilitación (22) motor = Motor(forward=17, backward=27, enable=22)
Las acciones de control del motor se definen en un diccionario para facilitar la lectura. Un bucle infinito (while True) recorre estas acciones, ejecutando cada una durante 5 segundos.
try: # Función principal para controlar la dirección y movimiento del motor. # Alterna la rotación del motor entre horario y antihorario con pausas intermedias. actions = {'CW': motor.forward, 'CCW': motor.backward, 'STOP': motor.stop} # Define las acciones del motor para facilitar la lectura while True: # Recorre las acciones definidas para controlar la dirección del motor for action in ['CW', 'STOP', 'CCW', 'STOP']: actions[action]() # Ejecuta la acción actual (avanzar, parar, retroceder, parar) print(f"{action}") # Muestra la acción actual en la consola sleep(5) # Pausa de 5 segundos antes de proceder a la siguiente acción
Este segmento permite que el programa se termine de manera segura utilizando una interrupción de teclado (Ctrl+C) sin causar errores.
except KeyboardInterrupt: # Maneja de forma segura una interrupción de teclado (Ctrl+C) para detener el programa pass