Mi línea de Arduino después de Robot!!!!!! -Con Sensor de reflectancia Pololu QTR-6A IR matriz

usé una Arduino Duemillanove con el ATMega 328. Propulsión es proporcionada por los dos paralaje Futaba Servos de rotación continua. Mi sensor es el Sensor de reflectancia Pololu QTR-6A IR matriz, y está todo apagado 4 baterías recargables de NiMH Duracell AA :)

Puede seguir un oscuro, sobre un fondo claro. En este caso utilicé cinta adhesiva negra en una pizarra. Primero se calibra durante 5 segundos. Lo mueve a través de la línea un par de veces para que se acostumbre a la diferencia en reflectividad. Después de la calibración comienza hacia adelante. Utilicé un algoritmo para determinar su error de la línea. Si determina mediante el algoritmo que resulta en un error extremo, se convertirá por un tiempo más largo. Del mismo modo, si el robot determina es sólo una fracción de una pulgada de la línea, sólo cambiará por una fracción de segundo. Esto reduce la remuneración excesiva y hace que la línea que sigue un poco más suave y más fiable.

Este es el código yo, comencé desde cero y añadir la biblioteca de MegaServo. Soy consciente de que hay una biblioteca para los arreglos de sensor IR de chip, pero me encontré con problemas así que decidí empezar de cero con el sensor de lectura. Estoy usando la versión análoga de la matriz del sensor chip, a diferencia de la versión RC, que una señal digital. Mis sensores de salida un voltaje analógico basado en la reflectancia de la superficie. Por ejemplo, si va a proporcionar 5V a los sensores en Vcc, y tiene una superficie oscura, que va de salida del sensor a un voltaje más cercano a 5V. Por el contrario, si el sensor encuentra una muy reflexiva, (superficie blanca) producirá más cercano a 0V. Puedo leer estos 6 salidas analógicas de mis 6 sensores a través de los 6 pines de entrada-salida análoga en mi Arduino.
Además, mi parada algoritmo utiliza if anidadas declaraciones para comprobar 3 veces si el robot es realmente al final, antes de se detiene por 10 segundos, parpadea la luz. Esto evita que una parada accidental en medio de la pista debido a lecturas inexactas o glitches. Durante la calibración, calculé un valor medio de reflectancia que utilizo más tarde para ayudar con la navegación y de toma de decisiones. También imprimí algunos datos a la pantalla de serie para propósitos de prueba.

Este es mi código:

// ==========================================================
No dude en cambiar y utilizar este código, pero por favor dame crédito.
Autor: Austin Duff - 24 de junio de 2009
// ==========================================================
#include < PololuQTRSensors.h >
#include < Servo.h >
#include < MegaServo.h >
#define NBR_SERVOS 3
#define FIRST_SERVO_PIN 2

Servo izquierdo;
Derecho del servo;
Torre del servo;

Servos de MegaServo [NBR_SERVOS];

int pingPin = 7;
int mitad = 0;
int mn = 0;
mx int = 0;

void setup()
{

Servos [0] .attach (2, 800, 2200); Torre
Servos [1] .attach (9, 800, 2200); izquierda
Servos [2] .attach (10, 800, 2200); derecho
Serial.Begin(9600);
Servos[0].Write(65);
digitalWrite (13, bajo);

Servos[2].Write(90);
Servos[1].Write(90);

para (int i = 0; i < 5000; i ++)
{
digitalWrite (13, HIGH);

int val = 0;
para (int j = 0; j < = 5; j ++)
{
Val = analogRead(j);
Si (val > = mx)
MX = val;
Si (val < = mn)
MN = val;
}
Delay(1);
}

medio = ((mx + mn)/2);
digitalWrite (13, bajo);

Servos[2].Write(90);
Servos[1].Write(90);
}
void loop()
{

int s0 = 0;
int s1 = 0;
s2 int = 0;
s3 de int = 0;
int s4 = 0;
int s5 = 0;

S0 = analogRead(0);
S1 = analogRead(1);
S2 = analogRead(2);
S3 = analogRead(3);
S4 = analogRead(4);
S5 = analogRead(5);

Serial.Print ("media:");
Serial.Print(MID);
Serial.Print("");
Serial.Print(S0);
Serial.Print("");
Serial.Print(S1);
Serial.Print("");
Serial.Print(S2);
Serial.Print("");
Serial.Print(S3);
Serial.Print("");
Serial.Print(S4);
Serial.Print("");
Serial.Print(S5);
Serial.Print("");
Serial.println();

Servos[2].Write(180);
Servos[1].Write(0);

Delay(10);

if(((S0+S1+S2)/3) > (((s3+s4+s5)/3) + 250)) & & (! () (S0 > MID) & &(s5 > mid)))
{
Servos[2].Write(180);
Servos[1].Write(90);
Serial.Print ("derecha");
Delay(ABS(((S5+S4+S3)/3)-((S0+S1+S2)/3))/2));
}
if(((S0+S1+S2)/3) < (((s3+s4+s5)/3) -250)) & & (! () (S0 > MID) & &(s5 > mid)))
{
Servos[2].Write(90);
Servos[1].Write(0);
Serial.Print ("izquierda");
Delay(ABS(((S5+S4+S3)/3)-((S0+S1+S2)/3))/2));
}
Si ((s0 > mid) & &(s5 > mid))
{
Servos[2].Write(90);
Servos[1].Write(90);
Serial.Print ("STOP");
Si ((s0 > mid) & &(s5 > mid))
{
Servos[2].Write(90);
Servos[1].Write(90);
Serial.Print ("STOP");
Si ((s0 > mid) & &(s5 > mid))
{
Servos[2].Write(90);
Servos[1].Write(90);
Serial.Print ("STOP");
para (int k = 0; k < 50; k ++)
{
digitalWrite (13, HIGH);
Delay(100);
digitalWrite (13, bajo);
Delay(100);
}
Delay(5000);
}
}
}

}

Artículos Relacionados

Línea muy Simple después de Robot con Arduino

Línea muy Simple después de Robot con Arduino

En este Instructable, vamos a construir una simple línea genérica después de arduinobot. Habrá un montón de espacio para la creatividad en este Instructable.El robot, en este tutorial, se alimenta de 4 pilas AA y es capaz de seguir la cinta aislante
Línea de arduino motor escudo] siguiente robot (FC-51)

Línea de arduino motor escudo] siguiente robot (FC-51)

He notado un montón de gente hacer línea después de robots pero no mucho con el escudo del motor arduino. Y ya que arduino no nombre un nombre pop que consiguió desordenado entre el protector y el arduino sí mismo. Así que en vez de hacer otras perso
Muy sencillo de crear Arduino bluetooth espía robot con mando a distancia Android app

Muy sencillo de crear Arduino bluetooth espía robot con mando a distancia Android app

en este proyecto se verá lo simple mezcla de las diferentes tecnologías y aplicaciones de terceros permite para crear un juguete bastante complejo.El robot hace dos cosas:1. Arduino base espía robot se mueve según las órdenes de mando a distancia And
Luz de Arduino después de Robot

Luz de Arduino después de Robot

ResumenEste instructable utilizará tres fotorresistores (resistencias dependientes de luz) y un Arduino para controlar el movimiento de un robot. Cualquier chasis robot comunes puede usarse para el robot. Los sensores de luz se montará en el lado izq
Arduino Bluetooth garaje puerta Control con sensores y personalizable aplicación Android

Arduino Bluetooth garaje puerta Control con sensores y personalizable aplicación Android

Usar un arduino para activar relés para apertura de puertas y cerraduras eléctricas.Una aplicación personalizable para Android, conecta con arduino mediante emparejamiento protegidos por contraseña.Un módulo de bluetooth hc-05 recibe órdenes desde un
Carro RC a Arduino Robot con sensores múltiples

Carro RC a Arduino Robot con sensores múltiples

este instructable abarca la conversión de un carro RC en un robot controlado por Arduino. Mi intención al iniciar este proyecto fue A) aprender más sobre Arduino y programación B) construir una plataforma confiable de bajo costo para ampliar C) gasta
Empezar a trabajar con sensores de distancia y Arduino

Empezar a trabajar con sensores de distancia y Arduino

Se trata de una guía de inicio para el uso de sensores de distancia con Arduino y algunos procesamiento. Hemos utilizado estos sensores:GP2Y0A21YK0F SHARPUnidad de Sensor de medición de distanciaCompuesto por una combinación integrada de PSD (detecto
Línea básica siguiente Robot con Arduino

Línea básica siguiente Robot con Arduino

07/09/2015Han pasado unos años desde que publicamos inicialmente básica línea siguiente Robot con Arduino tutorial, y parece que mucha gente encuentra útil que debemos publicar una actualización que funciona actual de las bibliotecas de Arduino, incl
Línea siguiente Arduino Robot

Línea siguiente Arduino Robot

Este robot utiliza un algoritmo de control PID para seguir autónomamente un camino negro sobre un fondo blanco. Utiliza una matriz de ocho sensores de reflectancia IR para determinar la posición del robot en la línea, y el microcontrolador Arduino Na
Monitoreo de temperatura en línea usando Arduino Ethernet Shield

Monitoreo de temperatura en línea usando Arduino Ethernet Shield

Hola, hoy voy a mostrar Chico cómo hacer monitoreo en línea de la temperatura del arduino, este ejemplo es basado en la web significa que puede conectar desde cualquier lugar, combinan AJAX y PHP junto que puede aportar datos de la temperatura sobre
RPM del ventilador con sensor de efecto hall interno y Arduino (introducción a la interrupción de Hardware y pantalla LCD)

RPM del ventilador con sensor de efecto hall interno y Arduino (introducción a la interrupción de Hardware y pantalla LCD)

Para mi proyecto de trabajo, tuve que medir la velocidad de giro del rotor en revoluciones por minuto (RPM) de un ventilador de computadora modificado. Tenía tres cables que salen y que marcado que puede ser que tiene alguna forma de controlar su vel
El reloj de la historia: Arduino LCD con sensores de la tapa

El reloj de la historia: Arduino LCD con sensores de la tapa

Este es aún otro Arduino LCD reloj, pero con un giro; Este reloj sabe algunas fiestas y cumpleaños, realizar cálculos sobre la marcha de a qué edad una persona es y entonces Mostrar la información en la pantalla LCD. Me inspiré a hacer este reloj por
Línea siguiente Robot con el control PD básico (proporcional-derivado)

Línea siguiente Robot con el control PD básico (proporcional-derivado)

Este Instructable demostrará cómo utilizar control PD (Proporational-derivado) de un seguidor de línea simple. El ejemplo utiliza el seguidor de línea desarrollado en el seguidor de línea básico Instructable:Se utilizarán los siguientes componentes:1
Al aire libre Arduino estación meteorológica con registro PC y gráficos

Al aire libre Arduino estación meteorológica con registro PC y gráficos

quería tener un registro de tiempo al aire libre con registro de la PC y gráficos durante bastante tiempo. Hay tales dispositivos en el mercado pero su costo es realmente alto. Entonces, decidió construir uno yo mismo y disfrutar también de la experi