Nivel 2: Leyendo la Línea

El seguidor de lineas velocista, Open Source

Nivel 2: Leyendo la línea

 

Ahora sí que comienza lo bueno.

Ya es hora de crecer… la verdad es que seguir una línea solo con dos sensores es un poco retardado, e infantil. Es momento de subir nuestro nivel para comenzar a correr.

 

Antes que todo, por favor, vean este video para aclarar conceptos:

 

 

Como bien dice el video, vamos a calcular nuestra alineación con la línea (valga la redundancia), a partir del método del promedio ponderado.  Pues bien, aquí podemos hacer todo un libro al respecto, pero solo nos limitaremos a mostrar las funciones de la librería para hacerlo de la manera más fácil y rápida posible.

Antes comenzar, considere lo siguiente:

Cuando practique con su robot, ponga la pista en un lugar donde la luz solar no incida directamente. La luz infrarroja residual que emite el sol, hace que el robot se maree y tome lecturas erróneas. Considere que según las reglas oficiales de la categoría, la pista está en condiciones de luminosidad controlada 

 

Las funciones que estudiaremos en este nivel, serán las siguientes:


Función Descripción

 

OpenLamborghino.calibracion(); Se utiliza para calibrar los sensores. Para eso, toma los máximos y los mínimos, y reduce el rango de medición para tomar valores más precisos.

 

OpenLamborghino.LineaBlanca(); Obtiene la posición relativa del sensor respecto a la LINEA BLANCA, considerando que son 6 sensores. El retorno de esta función es un número entre -255 y 255, donde -255 significa que la línea está totalmente a la derecha, y 255 significa que la línea está totalmente a la izquierda. Obviamente, 0 significa que está totalmente alineado.

 

OpenLamborghino.LineaNegra(); Obtiene la posición relativa del sensor respecto a la LINEA NEGRA, considerando que son 6 sensores. El retorno de esta función es un número entre -255 y 255, donde -255 significa que la línea está totalmente a la derecha, y 255 significa que la línea está totalmente a la izquierda. Obviamente, 0 significa que está totalmente alineado.


 
Pues, vamos con el código de ejemplo:


#include <OpenLamborghino.h>

#define BOTON  12
#define BUZZER  10

OpenLamborghino OpenLamborghino(BOTON, BUZZER);


void setup() {
  Serial.begin(9600);
  OpenLamborghino.WaitBoton();
  OpenLamborghino.calibracion();
  OpenLamborghino.WaitBoton();
  delay(1000);
}

void loop() {

  int pos =  OpenLamborghino.LineaBlanca();
  Serial.println(pos);

}

 

 

 

Este simple programa, nos ayudará a detectar la posición relativa del sensor, por sobre la línea blanca.

El algoritmo hace lo siguiente:

  • Primero llama a la función OpenLamborghino.h
  • Define los pines del buzzer y del botón
  • inicializa la librería OpenLamborghino.h
  • Entra en el setup():
    • Inicia el la comunicación a través del puerto Serial.
    • Queda en un bucle infinito, a la espera de que se presione el botón.
    • Una vez que se presione el botón, comienza la calibración, haciendo sonar el buzzer.
    • Una vez que la calibración termina, suena el buzzer 2 veces e imprime por puerto serial los valores máximos y mínimos para cada uno de los 6 sensores del QTR-8A.
    • Queda en un bucle infinito, a la espera de que se presione el botón.
    • Una vez que se presiona el botón, sale del bucle, y continua con el loop().
  • Asigna a la variable pos, la posición de la línea blanca entre -255 y 255.
  • Imprime por puerto serial la variable pos.

 

Rápido y fácil…

Acá un video demostrativo.

 

 
 


Si ya lograste dominar este nivel, es hora de pasar al siguiente.

2
Leave a Reply

Please Login to comment
1 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
adminrami Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
rami
Member
rami

Hola como estan solo funciona con el QTR-8A, tambien podria funcionar con el QTR-8RC?