Paso 13: Prueba IR
Utilice el siguiente código para determinar si la detección de IR está configurada correctamente. Subir el código, entonces puso su mano delante del LED IR y el Arduino LED debe encender. Cuando usted mueve su mano, el LED debe apagarse. (En la foto de arriba el LED está marcado con una "L")Código:
(http://www.egrobotics.com/instructions/code/testir.ino)
#define IRsensorPin 11 void IR38Write() {} void loop() {}
#define IRledPin 10
#define D13ledPin 13
para (int i = 0; i < = 384; i ++) {}
digitalWrite (IRledPin, alto);
delayMicroseconds(13);
digitalWrite (IRledPin, bajo);
delayMicroseconds(13);
}
}
void setup() {}
pinMode (IRledPin, salida);
digitalWrite (IRledPin, bajo);
pinMode (D13ledPin, salida);
digitalWrite (D13ledPin, bajo);
}
IR38Write();
Si (digitalRead(IRsensorPin)==LOW) {}
digitalWrite (D13ledPin, alto);
} else {}
digitalWrite (D13ledPin, bajo);
}
Delay(100);
}
Solución de problemas:
Si el LED está siempre en o se enciende y se apaga a menudo entonces agregar más cinta alrededor de la paja o poner un muro divisorio entre los IR LED y Sensor de infrarrojos.
El LED no se enciende en caso de que todo está conectado y conectado a los pines correctos. Asegúrese de que los ángulos son correctos. La luz debe ser capaz de rebotan en el objeto y volver en la parte negra del Sensor IR.
Parte 2
Si el LED IR y el receptor están funcionando correctamente la siguiente cosa a hacer es probar el siguiente código que activará la LDR y IR para tener el robot busca la luz, pero en el mismo tiempo intento evitar los obstáculos que se encuentran en el camino.
Código:
(http://www.egrobotics.com/instructions/code/robotavoid.ino)
#include < Servo.h >
Servo myservo;
#define IRsensorPin 11
#define IRledPin 10
const int RightSensor = 2;
const int LeftSensor = 0;
int IR;
int SensorLeft;
int SensorRight;
int SensorDifference;
void IR38Write() {}
para (int i = 0; i < = 384; i ++) {}
digitalWrite (IRledPin, alto);
delayMicroseconds(13);
digitalWrite (IRledPin, bajo);
delayMicroseconds(13);
}
}
void setup() {}
myservo.Attach(5);
pinMode (IRledPin, salida);
digitalWrite (IRledPin, bajo);
pinMode (8, salida);
pinMode (9, salida);
pinMode (LeftSensor, entrada);
pinMode (RightSensor, entrada);
Serial.Begin(9600);
Serial.println ("\nBeginning la luz buscando comportamiento");
}
void loop() {}
IR38Write();
IR = digitalRead(IRsensorPin);
Delay(50);
SensorLeft = 1023 - analogRead(LeftSensor);
Delay(1);
SensorRight = 1023 - analogRead(RightSensor);
Delay(1);
SensorDifference = abs (SensorLeft - SensorRight);
Serial.Print ("Sensor izquierdo =");
Serial.Print(SensorLeft);
Serial.Print("\t");
Serial.Print ("Sensor de la derecha =");
Serial.Print(SensorRight);
Serial.Print("\t");
Si (SensorLeft > SensorRight & & SensorDifference > 75 & & IR == HIGH) {}
Serial.println("left");
digitalWrite (8, HIGH);
Delay(250);
digitalWrite (8, bajo);
Delay(100);
}
Si (IR == LOW) {}
digitalWrite (8, HIGH);
Delay(1500);
digitalWrite (8, bajo);
digitalWrite (8, bajo);
Delay(150);
}
Si (SensorLeft < SensorRight & & SensorDifference > 75 & & IR == HIGH) {}
digitalWrite (9, alto);
Delay(250);
digitalWrite (9, bajo);
Delay(100);
}
else if (SensorDifference < 75 & & IR == HIGH) {}
Serial.println("forward");
digitalWrite (8, HIGH);
digitalWrite (9, alto);
Delay(500);
digitalWrite (8, bajo);
digitalWrite (9, bajo);
Delay(250);
}
Serial.Print("\n");
}