Paso 6: Código de Arduino
Código de Arduino y calibración. Añadir el código que indicamos a continuación para el Arduino y siga las instrucciones de calibración indicadas a continuación el código.
/ * Linterna siguiendo Robot código 25/03/2014 Este código utiliza tres resistores dependientes luz posicionados Pines de control del motor Las siguientes velocidades del motor son determinadas por el experimento int sensorPinRight = 0; Pin del sensor adecuado int lightReadingRight; int lightReadingCenter; int lightReadingLeft; int readingDelay = 100; Retardo entre lecturas void setup() Descomentar la alimentación serial para fines de calibración void loop() Tomar lectura del sensor adecuado Tomar lectura del sensor de centro Tomar lectura de sensor izquierdo Avanzar si se detecta suficiente luz del sensor de centro Gire a la derecha si se detecta suficiente luz del sensor adecuado
a la derecha, frente y lados izquierdos de un robot a control
movimiento. Cuando luz de suficiente fuerza cae en uno de
los sensores, el robot gira a la derecho, se mueve hacia adelante o gira
a la izquierda.
*/
int E1 = 5; Activar pin para motor adecuado
int M1 = 4; Pin de control de velocidad para motor izquierdo
int E2 = 6; Activar pin para el motor izquierdo
int M2 = 7; Pin de control de velocidad para motor adecuado
para que el robot se mueve hacia adelante en línea recta.
int leftMotorSpeed = 215;
int rightMotorSpeed = 185;
int sensorPinCenter = 1; Perno del sensor de centro
int sensorPinLeft = 2; Pin sensor izquierdo
int lightToleranceRight = 1000; Sensor de lectura necesaria para activar a la derecha
int lightToleranceCenter = 1000; Sensor de lectura necesaria para desencadenar el movimiento hacia adelante
int lightToleranceLeft = 1000; Sensor de lectura necesario para accionar el giro a la izquierda
{
pinMode(M1,OUTPUT);
pinMode(M2,OUTPUT);
Serial.Begin(9600);
}
{
Descomentar las líneas impresión serie para propósitos de calibración
lightReadingRight = analogRead(sensorPinRight);
Serial.Print ("lectura del Sensor de la derecha:");
Serial.println(lightReadingRight);
lightReadingCenter = analogRead(sensorPinCenter);
Serial.Print ("centro de lectura del Sensor:");
Serial.println(lightReadingCenter);
lightReadingLeft = analogRead(sensorPinLeft);
Serial.Print ("lectura del Sensor de la izquierda:");
Serial.println(lightReadingLeft);
Si (lightReadingCenter > lightToleranceCenter)
{
digitalWrite (M1, alto);
digitalWrite (M2, alto);
analogWrite (E1, leftMotorSpeed);
analogWrite (E2, rightMotorSpeed);
Delay(readingDelay);
Parada
digitalWrite (M1, LOW);
digitalWrite (M2, bajo);
analogWrite (E1, 0);
analogWrite (E2, 0);
}
Si (lightReadingRight > lightToleranceRight)
{
digitalWrite (M1, LOW);
digitalWrite (M2, alto);
analogWrite (E1, leftMotorSpeed);
analogWrite (E2, rightMotorSpeed);
Delay(readingDelay);
Parada
digitalWrite (M1, LOW);
digitalWrite (M2, bajo);
analogWrite (E1, 0);
analogWrite (E2, 0);
}
Gire a la izquierda si se detecta suficiente luz de sensor izquierdo
Si (lightReadingLeft > lightToleranceLeft)
{
digitalWrite (M1, alto);
digitalWrite (M2, bajo);
analogWrite (E1, leftMotorSpeed);
analogWrite (E2, rightMotorSpeed);
Delay(readingDelay);
Parada
digitalWrite (M1, LOW);
digitalWrite (M2, bajo);
analogWrite (E1, 0);
analogWrite (E2, 0);
}
Delay(5000); Quite el comentario de este largo retraso para propósitos de calibración motor
}
Con este código subido al robot, desconectar los motores y abrir el serial monitor para echar un vistazo a las lecturas de los sensores de luz. Hice mi calibración de luz de la habitación normal. Cada uno de los sensores al descubierto dio lecturas en el rango de 1000 a 1100. Ajusté lentamente el trimmer hasta que cada sensor Lee cerca de 1000. Un poco más o un poco menos está bien. Cuando cubierto un sensor de la luz, la lectura cayó a los 800s alto bajo 900s. En el código de Arduino luego configurar las variables de tres tolerancia; lightToleranceLeft, lightToleranceRight y lightToleranceCenter a 1000. Así, cuando el robot está en la oscuridad, todas las lecturas será por debajo del nivel del disparador de 1000. Cuando se muestra una linterna en un sensor, la lectura del sensor ir por encima del nivel de activación y activar el adecuado movimiento del robot.
Los números específicos que utilicé para mi particular sensores no son importantes. Lo importante es que envíes las lecturas del sensor en el monitor serial para obtener sus lecturas de luz ambiente. Luego lentamente ajustar los trimmers en los sensores hasta que las lecturas de los tres sensores son sobre el mismo. Luego cubrir cada sensor y debe obtener una lectura más baja. Establezca las variables de tolerancia en algunos lectura cerca de la lectura de luz ambiente. Una linterna alumbrando el sensor entonces debe invocar una lectura superior a la tolerancia, por lo tanto activar el robot.
Una última cosa con respecto a la calibración. En la parte inferior del código de Arduino es una línea comentada con un retraso de cinco segundos. Yo sin comentar esta línea para asegurarse de que los motores fueron unidos correctamente. Con el robot suspendido sobre el suelo, ejecutar el código con el robot en la oscuridad. Brillar una luz en el sensor delantero y con la sensación de manos que forma las ruedas están girando. Si uno de ellos se está moviendo hacia atrás en vez de hacia adelante, cambiar la posición de los cables de ese motor en el escudo del motor. A continuación arrojar luz sobre el sensor correcto y sentir las ruedas. La rueda derecha debe ir hacia atrás y la rueda izquierda debe seguir adelante. Si sucede lo contrario, puede intercambiar las posiciones de motor. H1 + pasa M2 + y M1 - se convierte en M2 - y viceversa. Por último, comentar el retraso del segundo cinco y subir otra vez el código. El robot debería estar listo para ir.