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:

Nombre

ELEMENTOS DE ESTE KIT

ENLACE

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa SunFounder R3

BUY

Módulo Controlador de Motor L9110

-

Motor TT

-

Cableado

Conecta los cables entre el módulo L9110 y la placa R3 de acuerdo con el diagrama a continuación.

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

../_images/car_2.png

Código

Nota

  • Abre el archivo 2.move.ino bajo la ruta de 3in1-kit\car_project\2.move.

  • O copia este código en Arduino IDE.

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.

  1. Inicializar los pines del módulo L9110.

    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);
    }
    
  2. 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.

    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);
    }
    ...
    
  3. Llamar a estas funciones en loop().

    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.)