Hola a todos como dice el titulo estoy intentando hacer un carrito resuelve laberintos pero soy un principiante en el uso de arduino y lo que pasa que cuando conecto un sensor ultrasonico (HC-SR04) funciona bien pero cuando intento conectar 3 sensores ultrasonicos solo funciona el primero y si alcazo el segundo, alguien sabe porque pasa esto? les dejo mi codigo para que se den una idea
...
Código:
// Ultrasonico Frontal
#define Pecho 6
#define Ptrig 7
long duracion, distancia;
// Ultrasonico Izquierdo
#define IzqPecho 5
#define IzqPtrig 4
long Izqduracion, Izqdistancia;
// Ultrasonico Derecho
#define DerPecho 3
#define DerPtrig 2
long Derduracion, Derdistancia;
void setup() {
pinMode(Pecho, INPUT); // define el pin 6 como entrada (echo)
pinMode(Ptrig, OUTPUT); // define el pin 7 como salida (triger)
pinMode(IzqPecho, INPUT); // define el pin 5 como entrada (echo)
pinMode(IzqPtrig, OUTPUT); // define el pin 4 como salida (triger)
pinMode(DerPecho, INPUT); // define el pin 3 como entrada (echo)
pinMode(DerPtrig, OUTPUT); // define el pin 2 como salida (triger)
pinMode(12, 1); // Define el pin 13 como salida
pinMode(11, 1);
pinMode(10, 1);
pinMode(9, 1);
}
void loop() {
//Activacion del Sensor delantero
digitalWrite(Ptrig, LOW);
delayMicroseconds(2);
digitalWrite(Ptrig, HIGH); // genera el pulso de triger por 10ms
delayMicroseconds(10);
digitalWrite(Ptrig, LOW);
duracion = pulseIn(Pecho, HIGH);
distancia = (duracion/2) / 29; // calcula la distancia en centimetros
//Activacion del Sensor izquierdo
digitalWrite(IzqPtrig, LOW);
delayMicroseconds(2);
digitalWrite(IzqPtrig, HIGH);
delayMicroseconds(10);
digitalWrite(IzqPtrig, LOW);
Izqduracion = pulseIn(IzqPecho, HIGH);
Izqdistancia = (Izqduracion/2) / 29;
//Activacion del Sensor derecho
digitalWrite(DerPtrig, LOW);
delayMicroseconds(2);
digitalWrite(DerPtrig, HIGH);
delayMicroseconds(10);
digitalWrite(DerPtrig, LOW);
Derduracion = pulseIn(DerPecho, HIGH);
Derdistancia = (Derduracion/2) / 29; // calcula la distancia en centimetros
if (distancia >= 9){ // si la distancia es mayor a 9cm
digitalWrite(12, 1);
digitalWrite(10 , 1);
}
if (distancia <= 4 && Izqdistancia <= 4 && Derdistancia > 4){
digitalWrite(12, 0); // en bajo si la distancia es menor a 4
digitalWrite(11, 0);
digitalWrite(10, 0);
digitalWrite(9, 0);
delay(1000);
digitalWrite(12,1); //se gira el carro en 90 grados hacia la derecha
digitalWrite(9,1);
delay(1000); //Tiempo de giro
digitalWrite(12,0); //Apaga todo
digitalWrite(9,0);
delay(1000);
}
if (distancia <= 4 && Izqdistancia > 4 && Derdistancia <= 4){
digitalWrite(12, 0); // en bajo si la distancia es menor a 4
digitalWrite(11, 0);
digitalWrite(10, 0);
digitalWrite(9, 0);
delay(1000);
digitalWrite(11,1); //se gira el carro en 90 grados hacia la izquierda
digitalWrite(10,1);
delay(1000); //Tiempo de giro
digitalWrite(11,0); //Apaga todo
digitalWrite(10,0);
delay(1000);
}
if (distancia <= 4 && Izqdistancia > 4 && Derdistancia > 4){
digitalWrite(12, 0); // en bajo si la distancia es menor a 4
digitalWrite(11, 0);
digitalWrite(10, 0);
digitalWrite(9, 0);
delay(1000);
digitalWrite(12,1); //se gira el carro en 90 grados hacia la derecha
digitalWrite(9,1);
delay(1000); //Tiempo de giro
digitalWrite(12,0); //Apaga todo
digitalWrite(9,0);
delay(1000);
}
if (distancia <= 4 && Izqdistancia <= 4 && Derdistancia <= 4){
digitalWrite(12, 0); // en bajo si la distancia es menor a 4
digitalWrite(11, 0);
digitalWrite(10, 0);
digitalWrite(9, 0);
delay(1000);
digitalWrite(11,1); //se gira el carro en 180 grados hacia la izquierda
digitalWrite(10,1);
delay(2000); //Tiempo de giro
digitalWrite(11,0); //Apaga todo
digitalWrite(10,0);
delay(1000);
}
}