Robot seguidor de luz

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.

 

 
El funcionamiento será el siguiente: 

  • 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 

 


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);  
}

 

 

 

No hay comentarios: