Este es el programa que utiliza un sensor Sharp 2Y0A21 conectado al pin analógico A0 y dos servos conectados a los pines digitales 10 y 11. El servo que mueve la rueda derecha está conectado al pin 10 y el que mueve la rueda izquierda al pin 11.
// Pin de lectura del sensor Sharp 2Y0A21
int ir_sensor0 = A0;
void setup()
{
pinMode(5, INPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
void loop()
{
int lectura, distancialateral;
lectura = analogRead(ir_sensor0); // lectura del sensor A0
distancialateral = pow(3027.4 / lectura, 1.2134); // conversión a centímetros
if(distancialateral>10){
digitalWrite(10, HIGH);//Rueda derecha adelante
delayMicroseconds(70000);
digitalWrite(10, LOW);
delayMicroseconds(700);
delay(50); //Con el valor del retardo modificamos la velocidad del servo
}
if(distancialateral<10){
digitalWrite(11, HIGH);//Rueda izquierda adelante
delayMicroseconds(90);
digitalWrite(11, LOW);
delayMicroseconds(900);
delay(50); //Con el valor del retardo modificamos la velocidad del servo
}
if(distancialateral==10){
digitalWrite(10, HIGH);//Rueda derecha adelante
delayMicroseconds(70000);
digitalWrite(10, LOW);
delayMicroseconds(700);
delay(50); //Con el valor del retardo modificamos la velocidad del servo
}
}
Programa para un robot con un sensor de distancia lateral para rodear cajas
// Pin de lectura del sensor lateral Sharp 2Y0A21
int ir_sensor0 = A3;
void setup()
{
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}
void loop()
{
int lectura, distancialateral;
lectura = analogRead(ir_sensor0); // lectura del sensor A0
distancialateral = pow(3027.4 / lectura, 1.2134); // conversión a centímetros
if(distancialateral>10){
digitalWrite(7, LOW);//Rueda izquierda adelante
digitalWrite(8, HIGH);//Rueda derecha parada
}
if(distancialateral<10){
digitalWrite(7, HIGH);//Rueda izquierda parada
digitalWrite(8, LOW);//Rueda derecha adelante
}
if(distancialateral==10){
digitalWrite(7, LOW);//Rueda izquierda adelante
digitalWrite(8, LOW);//Rueda derecha adelante
}
}
Programa con dos sensores de distancia para salir de un laberinto
// Pin de lectura del sensor lateral Sharp 2Y0A21
int ir_sensor0 = A3;
// Pin de lectura del sensor frontal Sharp 2Y0A21
int ir_sensor1 = A0;
void setup()
{
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
}
void loop()
{
int lectura, lecturas, distancialateral, distanciafrontal;
lectura = analogRead(ir_sensor0); // lectura del sensor A3
distancialateral = pow(3027.4 / lectura, 1.2134); // conversión a centímetros
lecturas = analogRead(ir_sensor1); // lectura del sensor A0
distanciafrontal = pow(3027.4 / lecturas, 1.2134); // conversión a centímetros
if(distanciafrontal>15){
if(distancialateral>15){
digitalWrite(7, LOW);//Rueda izquierda adelante
digitalWrite(8, HIGH);//Rueda derecha parada
}
if(distancialateral<15){
digitalWrite(7, HIGH);//Rueda izquierda parada
digitalWrite(8, LOW);//Rueda derecha adelante
}
if(distancialateral==15){
digitalWrite(7, LOW);//Rueda izquierda adelante
digitalWrite(8, LOW);//Rueda derecha adelante
}
}
if(distanciafrontal<=15){
digitalWrite(7, HIGH);//Rueda izquierda parada
digitalWrite(8, LOW);//Rueda derecha adelante
}
}