4. Seguir la línea

El coche está equipado con un módulo de Seguimiento de Línea, que se puede utilizar para hacer que el coche siga la línea negra.

Cuando el módulo de seguimiento detecta la línea negra, el motor derecho rota mientras que el motor izquierdo no, de modo que el coche se mueve un paso hacia la izquierda frontal. A medida que el coche se mueve, el módulo de línea se desplaza fuera de la línea, entonces el motor izquierdo gira y el motor derecho no, el coche se moverá un paso hacia la derecha para volver a la línea. Repetir los dos pasos anteriores permite que el coche se mueva a lo largo de la línea negra.

Antes de comenzar el proyecto, necesitas construir un mapa curvo con cinta de línea negra, el ancho de línea recomendado está entre 0.8-1.5cm y el ángulo de giro no debe ser menor a 90 grados.

Componentes Necesarios

En este proyecto, necesitaremos los siguientes componentes.

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ELEMENTOS EN 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

-

Módulo de Seguimiento de Línea

BUY

Conexión

Este es un módulo digital de Seguimiento de Línea, cuando detecta una línea negra, emite 1; cuando detecta una línea blanca, emite un valor de 0. Además, puedes ajustar su distancia de detección a través del potenciómetro en el módulo.

Construye el circuito según el siguiente diagrama.

Módulo de Seguimiento de Línea

Placa R3

S

2

V+

5V

G

GND

../_images/car_4.png

Ajustar el Módulo

Antes de comenzar el proyecto, necesitas ajustar la sensibilidad del módulo.

Conecta el cableado según el diagrama anterior, luego enciende la placa R3 (ya sea directamente en el cable USB o el cable del botón de la batería de 9V), sin subir el código.

Pega una cinta eléctrica negra en la mesa y coloca el carro sobre ella.

Observa el LED de señal en el módulo para asegurarte de que se ilumina en la mesa blanca y se apaga en la cinta negra.

Si no, necesitas ajustar el potenciómetro en el módulo, para que pueda hacer el efecto anterior.

../_images/line_track_cali.JPG

Código

Nota

  • Abre el archivo 4.follow_the_line.ino en la ruta 3in1-kit\car_project\4.follow_the_line.

  • O copia este código en el Arduino IDE.

  • O sube el código a través del Editor Web de Arduino.

Después de subir el código a la placa R3, alinea el módulo de Seguimiento de Línea bajo el coche con la línea negra, y verás al coche siguiendo la línea.

¿Cómo funciona?

En este código, se hace que los dos motores giren microscópicamente a izquierda y derecha según el valor del módulo de Seguimiento de Línea para que puedas ver al coche siguiendo la línea negra.

  1. Añade la definición de pin para el módulo de Seguimiento de Línea, aquí está configurado como INPUT. Aquí también inicializa el monitor serial y establece la tasa de baudios a 9600bps.

    ...
    const int lineTrack = 2;
    Serial.begin(9600);
    void setup() {
        ...
        pinMode(lineTrack, INPUT);
    }
    
  2. Lee el valor del módulo de Seguimiento de Línea, si es 1, entonces haz que el coche avance hacia la izquierda; de lo contrario, avanza hacia la derecha. También puedes abrir el monitor serial haciendo clic en el icono de la lupa en la esquina superior derecha para ver el cambio del valor del módulo de Seguimiento de Línea en la línea negra y blanca antes de desconectar el cable USB.

    void loop() {
    
        int speed = 150;
    
        int lineColor = digitalRead(lineTrack); // 0:white    1:black
        Serial.println(lineColor);
        if (lineColor) {
            moveLeft(speed);
        } else {
            moveRight(speed);
        }
    }
    
  3. Acerca de las funciones moveLeft() y moveRight().

    A diferencia de la función de giro izquierda-derecha en el proyecto 2. Movimiento por Código, aquí solo se necesitan pequeños giros a izquierda y derecha, por lo que solo necesitas ajustar el valor de A_1A o B_1B cada vez. Por ejemplo, si te mueves hacia la izquierda frontal (moveLeft()), solo necesitas configurar la velocidad a A_1A y todos los demás a 0, hará que el motor derecho gire en el sentido de las agujas del reloj y el motor izquierdo no se mueva.

    void moveLeft(int speed) {
        analogWrite(A_1B, 0);
        analogWrite(A_1A, speed);
        analogWrite(B_1B, 0);
        analogWrite(B_1A, 0);
    }
    
    void moveRight(int speed) {
        analogWrite(A_1B, 0);
        analogWrite(A_1A, 0);
        analogWrite(B_1B, speed);
        analogWrite(B_1A, 0);
    }
    
  • Serial

    Usado para la comunicación entre la placa Arduino y un ordenador u otros dispositivos.

    • Serial.begin(): Establece la tasa de datos en bits por segundo (baudios) para la transmisión de datos seriales.

    • Serial.println(): Imprime datos al puerto serial como texto ASCII legible seguido de un carácter de retorno de carro (ASCII 13, o “r”) y un carácter de nueva línea (ASCII 10, o “n”).

  • if else

    La estructura if else permite un mayor control sobre el flujo del código que la simple declaración if, permitiendo agrupar varias pruebas.