.. note:: ¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook. Sumérgete más profundamente en Raspberry Pi, Arduino y ESP32 con otros entusiastas. **¿Por qué unirse?** - **Soporte experto**: Resuelve problemas postventa y desafíos técnicos con ayuda de nuestra comunidad y equipo. - **Aprende y comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades. - **Vistas previas exclusivas**: Obtén acceso anticipado a anuncios de nuevos productos y avances. - **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes. - **Promociones festivas y sorteos**: Participa en sorteos y promociones de temporada. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo. .. _1.3.1_js: 1.3.1 Motor ================= Introducción ----------------- En este proyecto, aprenderemos cómo usar el L293D para conducir un motor de CC y hacerlo girar en sentido horario y antihorario. Dado que el motor de CC 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 enlaces a continuación. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCCIÓN DEL COMPONENTE - 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 en la placa de pruebas y coloca el puente en el pin de 5V, de esta manera se obtendrá una salida 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 y el otro en bajo. Así, puedes cambiar la dirección de rotación del motor. .. image:: ../img/image336.png **Procedimientos Experimentales** **Paso 1:** Monta el circuito. .. image:: ../img/image117.png .. note:: El módulo de alimentación puede utilizar una batería de 9V con el conector de batería de 9V en el kit. Inserta el 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**: Ve a la carpeta del código. .. raw:: html .. code-block:: cd ~/raphael-kit/nodejs/ **Paso 4**: Ejecuta el código. .. raw:: html .. code-block:: sudo node motor.js Al ejecutar el código, el motor primero gira en sentido horario durante 1s, luego se detiene durante 1s, después gira en sentido antihorario durante 1s; posteriormente, el motor se detiene durante 1s. Esta serie de acciones se repetirá continuamente. **Código** .. code-block:: js const Gpio = require('pigpio').Gpio; MotorPin1 = new Gpio(17, { mode: Gpio.OUTPUT }); MotorPin2 = new Gpio(27, { mode: Gpio.OUTPUT }); MotorEnable = new Gpio(22, { mode: Gpio.OUTPUT }); // Define a motor function to spin the motor // direction should be // 2(clockwise), 1(counterclockwise), 0(stop) function motor(direction) { switch (direction) { case 2: // Clockwise // Set direction MotorPin1.digitalWrite(1) MotorPin2.digitalWrite(0) // Enable the motor MotorEnable.digitalWrite(1) console.log('Clockwise') break; case 1: // Counterclockwise // Set direction MotorPin1.digitalWrite(0) MotorPin2.digitalWrite(1) // Enable the motor MotorEnable.digitalWrite(1) console.log('Counterclockwise') break; case 0: // Stop // Disable the motor MotorEnable.digitalWrite(0) console.log('Stop') } } process.on('SIGINT', function () { MotorEnable.digitalWrite(0) process.exit(); }) let index=-1 setInterval(() => { index=(index+1)%3 motor(index) }, 1000) **Explicación del Código** .. code-block:: js MotorPin1 = new Gpio(17, { mode: Gpio.OUTPUT }); MotorPin2 = new Gpio(27, { mode: Gpio.OUTPUT }); MotorEnable = new Gpio(22, { mode: Gpio.OUTPUT }); Importa el módulo pigpio y crea tres objetos de la clase Gpio para controlar los tres puertos IO de Gpio17, Gpio27 y Gpio22. .. code-block:: js function motor(direction) { switch (direction) { case 2: // Clockwise // Set direction MotorPin1.digitalWrite(1) MotorPin2.digitalWrite(0) // Enable the motor MotorEnable.digitalWrite(1) console.log('Clockwise') break; case 1: // Counterclockwise // Set direction MotorPin1.digitalWrite(0) MotorPin2.digitalWrite(1) // Enable the motor MotorEnable.digitalWrite(1) console.log('Counterclockwise') break; case 0: // Stop // Disable the motor MotorEnable.digitalWrite(0) console.log('Stop') } } Define una función motor() para controlar el motor, #. Cuando la dirección es igual a 2, el puerto MotorPin1 escribe un nivel alto, el puerto MotorPin2 escribe un nivel bajo, y el puerto de habilitación MotorEnable escribe un nivel alto, y el motor gira en sentido horario. #. Cuando la dirección es igual a 1, el puerto MotorPin1 escribe un nivel bajo, el puerto MotorPin2 escribe un nivel alto, y el puerto de habilitación MotorEnable escribe un nivel alto, y el motor gira en sentido antihorario. #. Cuando la dirección es igual a 0, el puerto de habilitación MotorEnable escribe un nivel bajo, y el motor deja de girar. .. code-block:: js let index=-1 setInterval(() => { index=(index+1)%3 motor(index) }, 1000) Deja que el motor gire en sentido horario y antihorario alternadamente, con un intervalo de 1 segundo. .. code-block:: js process.on('SIGINT', function () { MotorEnable.digitalWrite(0) process.exit(); }) Cuando se detecta que se presiona **ctrl+c**, MotorEnable escribe un nivel bajo para detener el motor. Imagen del Fenómeno ------------------------- .. image:: ../img/image119.jpeg