buenos dias, tengo un inconveniente en la lectura con dos sensores de ultrasonido, los cuales el sensor 1 funciona perfectamente, y el sensor 2 funciona si el sensor 1 no esta detectando nada; pero si el sensor 1 esta activo el sensor 2 queda totalmente bloqueado sin funcionar, la idea es que funcionen independientemente el uno del otro y con un retardo tanto en el inicio como en el apagado del led que esta asociado a este funcionamiento.
agradezco su colaboracion.
este es el codigo...
long tiempoencendido_S1 = 0;
long tiempofinal1_S1 =1000;
long tiempoapagado_S1 = 0;
long tiempofinal2_S1 =100;
long tiempoencendido_S2 = 0;
long tiempofinal1_S2 =1000;
long tiempoapagado_S2 = 0;
long tiempofinal2_S2 =100;
unsigned long tiempo;
unsigned long tiempo1;
unsigned long tiempo2;
unsigned long tiempo3;
int trigPin = 10;
int echoPin = 9;
int ledPin = 3;
int trig2Pin = 12;
int echo2Pin = 13;
int led2Pin = 4;
void setup() {
Serial.begin (115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledPin,OUTPUT);
pinMode(trig2Pin, OUTPUT);
pinMode(echo2Pin, INPUT);
pinMode(led2Pin,OUTPUT);
}
void loop() {
tiempo = millis();
tiempo1 = millis();
tiempo2 = millis();
tiempo3 = millis();
long duration, distance;
digitalWrite(trigPin, LOW); // Added this line
delayMicroseconds(2); // Added this line
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // Added this line
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance >=0 && distance <= 70){
if(tiempo - tiempoencendido_S1 > tiempofinal1_S1){
tiempoencendido_S1 = tiempo;
digitalWrite(ledPin,HIGH);
}} else {
if(tiempo1 - tiempoapagado_S1 > tiempofinal2_S1) {
tiempoapagado_S1 = tiempo1;
digitalWrite(ledPin,LOW);
}
long duration2, distance2;
delayMicroseconds(2); // Added this line
digitalWrite(trig2Pin, HIGH);
// delayMicroseconds(1000); - Removed this line
delayMicroseconds(10); // Added this line
digitalWrite(trig2Pin, LOW);
duration2 = pulseIn(echo2Pin, HIGH);
distance2 = (duration2/2) / 29.1;
if (distance2 >=0 && distance2 <= 70){
if(tiempo2 - tiempoencendido_S2 > tiempofinal1_S2){
tiempoencendido_S2 = tiempo2;
digitalWrite(led2Pin,HIGH);
}
} else {
if(tiempo3 - tiempoapagado_S2 > tiempofinal2_S2) {
tiempoapagado_S2 = tiempo3;
digitalWrite(led2Pin,LOW);
}
}}}