.. note:: ¡Hola, bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook! Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 con 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**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos. - **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más nuevos. - **Promociones y sorteos festivos**: Participa en sorteos y promociones especiales. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo! .. _1.3.1_py: 1.3.1 Motor =============== Introducción --------------- En este proyecto, aprenderemos cómo usar el L293D para conducir un motor de corriente continua (DC) y hacerlo girar en sentido horario y antihorario. Dado que el motor de DC necesita una corriente mayor, por razones de seguridad, utilizamos el módulo de alimentación para suministrar energía a los motores. Componentes Necesarios -------------------------- En este proyecto, necesitamos los siguientes componentes. .. image:: ../img/list_1.3.1.png Es definitivamente conveniente comprar un kit completo, aquí está el enlace: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nombre - ARTÍCULOS EN ESTE KIT - ENLACE * - Kit Raphael - 337 - |link_Raphael_kit| También puedes comprarlos por separado en los siguientes enlaces. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCCIÓN DE COMPONENTES - ENLACE DE COMPRA * - :ref:`cpn_gpio_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_power_module` - \- * - :ref:`cpn_l293d` - \- * - :ref:`cpn_motor` - |link_motor_buy| Diagrama Esquemático ------------------------ Conecta el módulo de alimentación a la placa de pruebas e inserta el capuchón del puente en el pin de 5V, así se suministrará un voltaje de 5V. Conecta el pin 1 del L293D al GPIO22 y configúralo como nivel alto. Conecta el pin 2 al GPIO27 y el pin 7 al GPIO17, luego establece un pin en alto mientras el otro en bajo. De esta manera, puedes cambiar la dirección de rotación del motor. .. image:: ../img/image336.png **Procedimientos Experimentales** **Paso 1:** Construye el circuito. .. image:: ../img/image117.png .. note:: El módulo de alimentación puede usar una batería de 9V con el conector de batería de 9V incluido en el kit. Inserta el capuchón del puente del módulo de alimentación en las tiras de bus de 5V de la placa de pruebas. .. image:: ../img/image118.jpeg **Paso 2:** Ingresa a la carpeta del código. .. raw:: html .. code-block:: cd ~/raphael-kit/python **Paso 3:** Ejecuta. .. raw:: html .. code-block:: 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 por 5 segundos, después gira en sentido antihorario durante 5 segundos y posteriormente se detiene por 5 segundos. Esta serie de acciones se ejecutará repetidamente. **Código** .. note:: Puedes **Modificar/Restablecer/Copiar/Ejecutar/Detener** el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como ``raphael-kit/python``. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto. .. raw:: html .. code-block:: python import RPi.GPIO as GPIO import time # Set up pins MotorPin1 = 17 MotorPin2 = 27 MotorEnable = 22 def setup(): # Set the GPIO modes to BCM Numbering GPIO.setmode(GPIO.BCM) # Set pins to output GPIO.setup(MotorPin1, GPIO.OUT) GPIO.setup(MotorPin2, GPIO.OUT) GPIO.setup(MotorEnable, GPIO.OUT, initial=GPIO.LOW) # Define a motor function to spin the motor # direction should be # 1(clockwise), 0(stop), -1(counterclockwise) def motor(direction): # Clockwise if direction == 1: # Set direction GPIO.output(MotorPin1, GPIO.HIGH) GPIO.output(MotorPin2, GPIO.LOW) # Enable the motor GPIO.output(MotorEnable, GPIO.HIGH) print ("Clockwise") # Counterclockwise if direction == -1: # Set direction GPIO.output(MotorPin1, GPIO.LOW) GPIO.output(MotorPin2, GPIO.HIGH) # Enable the motor GPIO.output(MotorEnable, GPIO.HIGH) print ("Counterclockwise") # Stop if direction == 0: # Disable the motor GPIO.output(MotorEnable, GPIO.LOW) print ("Stop") def main(): # Define a dictionary to make the script more readable # CW as clockwise, CCW as counterclockwise, STOP as stop directions = {'CW': 1, 'CCW': -1, 'STOP': 0} while True: # Clockwise motor(directions['CW']) time.sleep(5) # Stop motor(directions['STOP']) time.sleep(5) # Anticlockwise motor(directions['CCW']) time.sleep(5) # Stop motor(directions['STOP']) time.sleep(5) def destroy(): # Stop the motor GPIO.output(MotorEnable, GPIO.LOW) # Release resource GPIO.cleanup() # If run this script directly, do: if __name__ == '__main__': setup() try: main() # When 'Ctrl+C' is pressed, the program # destroy() will be executed. except KeyboardInterrupt: destroy() **Explicación del Código** .. code-block:: python def motor(direction): # Sentido horario if direction == 1: # Establecer dirección GPIO.output(MotorPin1, GPIO.HIGH) GPIO.output(MotorPin2, GPIO.LOW) # Habilitar el motor GPIO.output(MotorEnable, GPIO.HIGH) print ("Clockwise") ... Crear una función, ``motor()`` cuyo parámetro es direction. Si se cumple la condición de que direction=1, el motor gira en sentido horario; cuando direction=-1, el motor gira en sentido antihorario; y bajo la condición de que direction=0, deja de girar. .. code-block:: python def main(): # Definir un diccionario para hacer el script más legible # CW como sentido horario, CCW como sentido antihorario, STOP como detener directions = {'CW': 1, 'CCW': -1, 'STOP': 0} while True: # Sentido horario motor(directions['CW']) time.sleep(5) # Detener motor(directions['STOP']) time.sleep(5) # Sentido antihorario motor(directions['CCW']) time.sleep(5) # Detener motor(directions['STOP']) time.sleep(5) En la función main(), crea un diccionario, directions[], en el cual CW es igual a 1, el valor de CCW es -1, y el número 0 se refiere a Stop. Cuando se ejecuta el código, el motor primero gira en sentido horario durante 5s y luego se detiene durante 5s, después de eso, gira en sentido antihorario durante 5s; posteriormente, el motor se detiene durante 5s. Esta serie de acciones se ejecutará repetidamente. Ahora, deberías ver la hélice del motor girando. Imagen del Fenómeno --------------------------- .. image:: ../img/image119.jpeg