.. note:: ¡Hola, bienvenido a la Comunidad de Aficionados a Raspberry Pi, Arduino y ESP32 de SunFounder en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 con otros entusiastas. **¿Por qué unirse?** - **Soporte de expertos**: Resuelve problemas posventa y desafíos técnicos con ayuda de nuestra comunidad y equipo. - **Aprender y compartir**: 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 nuevos. - **Promociones festivas y sorteos**: Participa en sorteos y promociones de fiestas. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy! .. _car_move_code: 2. Movimiento por Código ========================== En el proyecto anterior, intentamos controlar el funcionamiento del motor utilizando diferentes señales de nivel para la entrada del módulo L9110. Si modificamos las señales de nivel a través del programa, entonces podremos controlar el movimiento del coche de manera flexible. **Componentes Necesarios** Para este proyecto, necesitaremos los siguientes componentes. Definitivamente es conveniente comprar un kit completo, aquí está el enlace: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nombre - ELEMENTOS DE ESTE KIT - ENLACE * - 3 in 1 Starter Kit - 380+ - |link_3IN1_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_uno` - |link_Uno_R3_buy| * - :ref:`cpn_l9110` - \- * - :ref:`cpn_tt_motor` - \- **Cableado** .. raw:: html Conecta los cables entre el módulo L9110 y la placa R3 de acuerdo con el diagrama a continuación. .. list-table:: :widths: 25 25 50 :header-rows: 1 * - Módulo L9110 - Placa R3 - Motor * - A-1B - 5 - * - A-1A - 6 - * - B-1B(B-2A) - 9 - * - B-1A - 10 - * - OB(B) - - Cable negro del motor derecho * - OA(B) - - Cable rojo del motor derecho * - OB(A) - - Cable negro del motor izquierdo * - OA(A) - - Cable rojo del motor izquierdo .. image:: img/car_2.png :width: 800 **Código** .. note:: * Abre el archivo ``2.move.ino`` bajo la ruta de ``3in1-kit\car_project\2.move``. * O copia este código en **Arduino IDE**. .. raw:: html Después de subir el código, el coche se moverá hacia adelante, hacia atrás, a la izquierda y a la derecha durante dos segundos respectivamente. **¿Cómo funciona?** Este proyecto es esencialmente el mismo que el anterior, implica hacer que el coche se mueva hacia adelante, hacia atrás, a la izquierda y a la derecha, así como detenerse proporcionando diferentes niveles de señal a los pines de entrada del módulo L9110. #. Inicializar los pines del módulo L9110. .. code-block:: arduino const int A_1B = 5; const int A_1A = 6; const int B_1B = 9; const int B_1A = 10; void setup() { pinMode(A_1B, OUTPUT); pinMode(A_1A, OUTPUT); pinMode(B_1B, OUTPUT); pinMode(B_1A, OUTPUT); } #. Establecer los pines de entrada en diferentes niveles alto o bajo para controlar la rotación de los motores izquierdo y derecho, y luego encapsularlos en funciones individuales. .. code-block:: arduino void moveForward() { digitalWrite(A_1B, LOW); digitalWrite(A_1A, HIGH); digitalWrite(B_1B, HIGH); digitalWrite(B_1A, LOW); } void moveBackward() { digitalWrite(A_1B, HIGH); digitalWrite(A_1A, LOW); digitalWrite(B_1B, LOW); digitalWrite(B_1A, HIGH); } ... #. Llamar a estas funciones en ``loop()``. .. code-block:: arduino void loop() { moveForward(); delay(2000); stopMove(); delay(500); moveBackward(); delay(2000); stopMove(); delay(500); ... * `digitalWrite(pin, valor) `_ * ``pin``: el número de pin de Arduino. * ``valor``: HIGH o LOW. Escribe un valor HIGH o LOW en un pin digital. Si el pin ha sido configurado como ``OUTPUT`` con ``pinMode()``, su voltaje se establecerá en el valor correspondiente: 5V (o 3.3V en placas de 3.3V) para HIGH, 0V (tierra) para LOW. * `pinMode(pin, modo) `_ * ``pin``: el número de pin de Arduino para establecer el modo. * ``modo``: INPUT, OUTPUT, o INPUT_PULLUP. Configura el pin especificado para comportarse ya sea como una entrada o una salida. * `delay(ms) `_ * ``ms``: la cantidad de milisegundos a pausar. Tipos de datos permitidos: unsigned long. Pausa el programa durante la cantidad de tiempo (en milisegundos) especificada como parámetro. (Hay 1000 milisegundos en un segundo.)