El “robot seguidor de luz” que se propone, es un dispositivo móvil con tres ruedas, dos movidas cada una por un motor (ruedas motrices), y la tercera será loca. Se dispone de dos sensores de luz (LDR), cada uno controlará a un motor de las rueda motrices.
- Si sobre la LDR1 incide luz suficiente, el dispositivo electrónico activará el motor 2 y el motor gira hacia la fuente de luz.
- Si sobre la LDR 2 incide luz suficiente, el dispositivo electrónico activará el motor 1 y el motor gira hacia la fuente de luz.
- Si la luz incide sobre las dos LDR, el robot avanzará hacia la fuente de luz
Solución adoptada
Circuito eléctrico
Lista de materiales
- 2 LDRs (fotorresistencias)
- 2 Resistencia 10k Ω
- Arduino UNO
- 2 Motores pequeños con reductora
- Cables, interruptor.
- Rueda loca.
- L293d.
- DM de 3mm para el chasis.
Este código de ejemplo puede servir para probar el robot.
int I1 = 10;
int I2 = 9;
int I3 = 5;
int I4 = 4;
int LDR1 = 0;
int LDR2 = 0;
//int EA = 11;
void setup() {
pinMode (I1, OUTPUT);
pinMode (I2, OUTPUT);
pinMode (I4, OUTPUT);
pinMode (I3, OUTPUT);
//pinMode (EA, OUTPUT);
parar();
Serial.begin(9600);
}
void loop() {
LDR1 = analogRead(A0);
LDR2 = analogRead(A1);
Serial.println("LDR1");
Serial.println(LDR1);
Serial.println("LDR2");
Serial.println(LDR2);
//delay(500);
if ((LDR1>700) && (LDR2>700)){
adelante();
}else if (LDR1>700){
izquierda();
digitalWrite (I3, LOW);
digitalWrite (I4, LOW);
}else if (LDR2>700){
derecha();
digitalWrite (I1, LOW);
digitalWrite (I2, LOW);
}else {
parar();
}
}
void adelante() {
//analogWrite(EA, 180);
digitalWrite (I1, HIGH);
digitalWrite (I2, LOW);
digitalWrite(I3, LOW);
digitalWrite(I4, HIGH);
}
void parar() {
digitalWrite (I1, LOW);
digitalWrite (I2, LOW);
digitalWrite (I3, LOW);
digitalWrite (I4, LOW);
}
void izquierda() {
digitalWrite (I1, HIGH);
digitalWrite (I2, LOW);
//digitalWrite (I4, HIGH);
//digitalWrite (I3, LOW);
}
void derecha() {
//digitalWrite (I1, HIGH);
//digitalWrite (I2, LOW);
digitalWrite (I3, LOW);
digitalWrite (I4, HIGH);
}