Robot Linefollower de Arduino y la basura - pensamientos y código (4 / 5 paso)

Paso 4: Código de Arduino - calibración del sensor de

/***
Línea que sigue la secuencia de calibración de sensores de robots
Braian
***/

/*
CÓMO UTILIZAR:
Sube imágenes de este script.
Arduino tiene que permanecer conectado a la computadora.
Los sensores deben tener su voltaje proporcionado.
Colocar el robot enteramente sobre su blanca superficie de funcionamiento
suponer es línea negra a su izquierda,
pero no en la visión de los sensores.
Pulse el botón reset arduinos.
Después de 2 segundos pin 13 a bordo LED deberá encenderse.
Mediciones de calibración superficie blanca se realizan mientras el LED está encendido - aproximadamente 2 seg.
LED se apagará después de eso.
Después de 2 segundos demora el LED se enciende otra vez.
Ahora tienes 5 segundos para mover el robot hacia un lado sobre una línea negra.
Línea tiene que ser el de la izquierda frente a la misma manera como robot se va a ejecutar.
Tienes que mover el robot a la izquierda y aproximadamente en ángulo recto a la línea.
Durante este paso que se toman las lecturas máximas que se producen cuando un solo sensor es directamente sobre la línea.
No se apresura, pero todos los sensores deben estar sobre la línea cuando llevó se apaga después de 5 segundos.
Después de otro 2 segundos demora el LED se encenderá una vez más.
Ahora tienes que mover el robot sobre la línea, frente a lo que hiciste en el paso pasado.
Significa durante 5 seg movimiento robot nuevo derecho sobre la línea.
Importante: este robot del tiempo tiene que moverse a la derecha - derecha sensor tiene que pasar primero por línea!
Durante esto son tomadas medidas que dicen, cómo baja al lado de los dos sensores IR, cuando la línea está exactamente entre los dos.
Mediciones finales cuando condujo sale después de 5 seg.
Iniciar el monitor de la serie.
Detener el desplazamiento automático y copiar valores de corrección de las líneas sucesivas de tres robots script del montar a caballo.
*/

/ * entrada de sensor pernos * /
const int sensorPins [] = {A0, A1, A2}; derecha, centro, izquierda

/ * a bordo LED pin * /
const int indicatorPin = 13;

/ * arrays para almacenar datos computados y sensor
tres sensores en cada arreglo de discos:
0 - A LA DERECHA, 1 - CENTRO, 2 - IZQUIERDA * /
lecturas de flotación [3]; lecturas del sensor
Float averageReadings [3] = {0, 0, 0}; media lecturas
Float whitePoints [3] = {0, 0, 0}; lectura en superficie blanca
blackPoints int [3] = {0, 0, 0}; máxima lectura pasando sobre la línea negra
Float unitSteps [3]; diferencia entre blanco y negro dividido 100
correcciones de int [3]; puntos blancos como int
Float peakDetect [3] = {0, 0, 0};
Float betweenReadings [2] = {1024, 1024}; las lecturas cuando la línea está entre dos sensores, centro-derecha, centro-izquierda
Boolean betweenState [3] = {false, false, false}; ayuda para saber que mínimo para almacenar

/ * bucle ayudante variables * /
int i;
int j;

void setup() {}

Serial.Begin(9600); inicia a serial monitor para datos de salida después de mediciones
pinMode (indicatorPin, salida); pin Set nboard led para indicar Estado de medición

/ * iniciar calibración después de retardo de 2 segundos * /
Delay(2000);

/ * MEDICIÓN EN SUPERFICIE BLANCA POR UNOS 2 SEGUNDOS SUPUESTOS * /
digitalWrite (indicatorPin, HIGH); a bordo enciende el LED
para (i = 0; i < 125; i ++) {//125 las lecturas de cada sensor
para (j = 0; j < = 2; j ++) {//loop a través de cada sensor
lecturas [j] = analogRead(sensorPins[j]); obtener valor
/ * calcular promedio sensor valores * /
whitePoints [j] = (whitePoints [j] * j + readings[j]) / (j + 1); promedio de los measurings tomados esto ahora
Delay(2);
}
Delay(10);
}
digitalWrite (indicatorPin, bajo); LED a bordo sale
Delay(2000); retardo de 2 seg

/ * VA HACIA LOS LADOS SOBRE LA LÍNEA NEGRA DENTRO DE PRÓXIMOS 5 SEGUNDOS SUPUESTOS * /
digitalWrite (indicatorPin, HIGH); a bordo enciende el LED
para (i = 0; i < 320; i ++) {//320 las lecturas de cada sensor
para (j = 0; j < = 2; j ++) {//loop a través de cada sensor
lecturas [j] = analogRead(sensorPins[j]); obtener valor
Si (lecturas [j] > blackPoints[j]) {//if valor actual es mayor que un olready guardado
blackPoints [j] = lecturas [j]; almacenar si aplicable
}
Delay(2);
}
Delay(10);
}
digitalWrite (indicatorPin, bajo); LED a bordo sale

/ * calcular el "paso de la unidad" - 1/100 de diferencia entre blanco y negro para cada sensor
y transformar puntos blancos a int (correcciones) * /
para (j = 0; j < = 2; j ++) {}
unitSteps [j] = (blackPoints [j] - whitePoints [j]) / 1000;
correcciones [j] = (int) (whitePoints [j] + 0.5);
}

Delay(2000); retardo de 2 seg

/ * VA HACIA LOS LADOS (A LA DERECHA!!!!!!) SOBRE LA LÍNEA NEGRA DENTRO DE PRÓXIMOS 5 SEGUNDOS SUPUESTO * /
digitalWrite (indicatorPin, HIGH); a bordo enciende el LED
para (j = 0; j < = 2; j ++) {//to reutilizar este arreglo de discos, todo a 0
blackPoints [j] = 0;
}
para (i = 0; i < 320; i ++) {//320 las lecturas de cada sensor
para (j = 0; j < = 2; j ++) {//loop a través de cada sensor
lecturas [j] = (analogRead(sensorPins[j]) - corrections[j]) / unitSteps [j]; obtener valor de cada uno en unidades finales
}
para (j = 0; j < = 2; j ++) {//loop a través de tres lecturas de sensor
Si (lecturas [j] > blackPoints[j]) {//if actual es mayor que la maxima almacenada
blackPoints [j] = lecturas [j]; almacenar si appicable
}
else if (lecturas [j] + 30 < blackPoints[j]) {//if lectura está disminuyendo (almacenado es mayor que el actual)
betweenState [j] = true; indicar en esta variable que el sensor se ha movido en un máximo de lectura (línea)
}

Si (betweenState [0] == true & & betweenState [1] == false) {//if primera lectura sensor ha pasado su maxima y segundo no ha
Si (betweenReadings [0] > lecturas [0] + readings[1]) {//if almacenado suma de dos lecturas del sensor es más grande que la suma actual
betweenReadings [0] = lecturas [0] + lecturas [1]; almacenar si es aplicable
}
}
else if (betweenState [1] == true & & betweenState [2] == false) {//if segunda lectura sensor ha pasado su maxima y tercero no ha
Si (betweenReadings [1] > lecturas [1] + readings[2]) {//if almacenado suma de dos lecturas del sensor es más grande que la suma actual
betweenReadings [1] = lecturas [1] + lecturas [2]; almacenar si es aplicable
}
}
Delay(2);
}
Delay(10);
}
digitalWrite (indicatorPin, bajo); LED a bordo sale

} / / instalación

void loop() {}

/ * imprimir los resultados en el monitor serial * /
Serial.Print ("const int correcciones [3] = {");
Serial.Print(Corrections[0]);
Serial.Print(",");
Serial.Print(Corrections[1]);
Serial.Print(",");
Serial.Print(Corrections[2]);
Serial.println("};");
Serial.Print ("const float unitSteps [3] = {");
Serial.Print(unitSteps[0]);
Serial.Print(",");
Serial.Print(unitSteps[1]);
Serial.Print(",");
Serial.Print(unitSteps[2]);
Serial.println("};");
Serial.Print ("const float betweenReadings [2] = {");
Serial.Print(betweenReadings[0]);
Serial.Print(",");
Serial.Print(betweenReadings[1]);
Serial.println("};");
Serial.println("");

} / / / lazo

Artículos Relacionados

Robot Linefollower de Arduino y la basura - fotos

Robot Linefollower de Arduino y la basura - fotos

esto hice con cerebros Arduino robot linefollower para un concurso donde no hizo muy bien, funcionó hacia fuera de pista. Pero fue el robot más barato allí, y aprendí tanto edificio, tengo algunos pensamientos y código de Arduino para compartir sin i
Construya su propio ROBOT insecto utilizando ARDUINO y SERVO

Construya su propio ROBOT insecto utilizando ARDUINO y SERVO

Hola, estoy con una instructalble más. Voy a enseñarte cómo construir un robot insecto utilizando Arduino y servomotores. Suena cool, verdad?. ¿Qué parece el uso de este robot? Debido a su tamaño compacto que puede ser utilizados en defensa, pueden t
Utilice un controlador de PS3 para controlar un robot NXT de Arduino

Utilice un controlador de PS3 para controlar un robot NXT de Arduino

actualización:Lo he arreglado un par de ejecución errores con el paquete de datos, y he modificado la biblioteca NXTI2CDevice para que sea compatible con Arduino 1.0.El archivo zip adjunto ha1. un nuevo sketch de Arduino2. un nuevo boceto de procesam
ARD-e: el robot con un Arduino como un cerebro

ARD-e: el robot con un Arduino como un cerebro

cómo crear un robot de código abierto Arduino controlado por menos de $100.Esperemos que después de leer esto instructable usted será capaz de dar su primer paso en robótica. ARD-e cuesta unos $90 a $130 dependiendo de cuánto electrónica repuesto tie
NECESITA una pareja para mi ROBOT---responde cabeza - Arduino (sin impresora 3D)

NECESITA una pareja para mi ROBOT---responde cabeza - Arduino (sin impresora 3D)

Se trata de un Arduino, servomotores y motion sensor basado responde cabeza de mi robot bípedo llamado AS U deseo.Este es mi primer paso de mi primer bípedo... Por lo tanto, me gustaría mostrar todos... pasos son muy sencillos y lo principal es que,
Joystick control brazo Robot utilizando un Arduino

Joystick control brazo Robot utilizando un Arduino

Propósito y descripción de esta guíaEste instructable es una mano para un proyecto escolar que hemos hecho. El propósito de este proyecto era crear un control de brazo robot utilizando thumbsticks. Tuvimos que utilizar un Arduino Uno para el control
Robot Educativo Fischertechnik Arduino (RAFA)

Robot Educativo Fischertechnik Arduino (RAFA)

Con de robot de la ONU "crear como este proyecto trata de" fines educativos usando el sistema Fishertechnik y potenciandolo con todas las prestaciones de Arduino, con ello conseguimos una plataforma educativa:-muy versátil-adaptable a diferentes
WireBeings beta: un 3D impreso y Robot expandible para Arduino con Android de Control

WireBeings beta: un 3D impreso y Robot expandible para Arduino con Android de Control

http://wirebeings.com/Vea video aquí:Este es un buen proyecto que puede continuar y modificar como aprendes más proyectos de Arduino. Este Instructable pasa a través de la construcción completa para el robot de tecnología bluetooth en la primera mita
Guía paso a paso al controlador de robot mago Micro (Arduino compatible)

Guía paso a paso al controlador de robot mago Micro (Arduino compatible)

el Micro mago de DAGU es un bajo costo Arduino compatible controlador diseñado especialmente para principiantes que quieren construir un pequeño robot. El Consejo tiene una serie de accesorios útiles construido en forma que en la mayoría de los casos
Con Bluetooth Robot controlado por Arduino mediante aplicación Android

Con Bluetooth Robot controlado por Arduino mediante aplicación Android

Después de intentar robot seguimiento remoto por mando a distancia IR. He proceder para controlar la misma plataforma del robot por BluetoothControlador Arduino a través de la aplicación para Android. Este método es más confiable, más distancia, mejo
(Sin embargo, otro) Chasis de plataforma-un Robot robótica Arduino DIY de piezas de repuesto

(Sin embargo, otro) Chasis de plataforma-un Robot robótica Arduino DIY de piezas de repuesto

Dio a mi sobrino un kit del arrancador Arduino hace unos meses. Le pregunté a mi hermana lo que estaba haciendo con él y dijo que había tenido algunos problemas de calcular hacia fuera. Veremos le la semana después de Navidad, así que le dije a traer
Línea Robot seguidor sin Arduino o microcontrolador

Línea Robot seguidor sin Arduino o microcontrolador

aquí expliqué un robot seguidor de línea sin microcontroladores o Arduino. Este es un proyecto muy simple para principiantes. Aquí tienes la necesidad de no tener ningún conocimiento de programación. así que deja probarlo...Paso 1: Recoger el materia
Brazo robot controlado por Arduino voz

Brazo robot controlado por Arduino voz

¿Te has sentido fustrated haciendo cosas que tenía un lado más?Bien, esto le ayudará.Se trata de un robot que puede hacer lo que quieres solo habla que por ejemplo se puede decir "arriba" y el robot hará un poco de movimiento hacia el lado que d
GOduino III - controlador del robot basada en Arduino protoboard-ambiente

GOduino III - controlador del robot basada en Arduino protoboard-ambiente

versiones16 de noviembre de 2012 aparece en DangerousPrototypes.com http://goo.gl/N4DIC03 de octubre de 2012: he diseñado un adaptador PCB a posición IR y 90 grados de sensores ultrasónicos para breadboard para apoyar proyectos de robot de GOduino II