Hola buenas a todoss!! Estoy tratando de mejorar este código, de cara a que sea más eficiente(más rápido) y que cargue menos al microcontrolador...
La idea principal es que si detecta el sensor 1, se active rele1, al tiempo el rele2 y después al rato el rele3. Si detecta el sensor 2 que se active el rele2 y al rato el rele3 y uno juntos. Luego si detecta el sensor 3, que se active el rele3, al rato el rele2 y al rato el rele1.Y finalmente una vez que están activados los 3 reles y detecte por ejemplo el sensor 1 que se apague al contrario de como lo ha encendido el mismo sensor. Y así con los dos sensores restantes...
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
BlynkTimer timer;
#include <TimeLib.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "cddfdfsfdytuygiyyt";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "xxxxxx";
char pass[] = "xxxxxxxxxxxx";
int s1=D1;
int s2=D2;
int s3=D0;
int ldr=A0;
int led1=D5;
int led2=D6;
int led3=D7;
int led4=D8;
int estados1=0;
int estados2=0;
int estados3=0;
int estadoldr;
const unsigned long ret1 = 400;
const unsigned long ret2 = 800;
const unsigned long lumenes=400;
unsigned long cont1 = 0;
unsigned long cont2 = 0;
unsigned long cont3 = 0;
unsigned long cont4 = 0;
unsigned long cont5 = 0;
unsigned long cont6 = 0;
unsigned long cont7 = 0;
unsigned long cont8 = 0;
unsigned long cont9 = 0;
unsigned long cont10 = 0;
unsigned long cont11 = 0;
unsigned long cont12 = 0;
unsigned long cont13 = 0;
unsigned long tempp1=0;
unsigned long tempp2=0;
unsigned long tempp3=0;
unsigned long tempp4=0;
unsigned long tempp5=0;
unsigned long tempp6=0;
int temp1=0;
int temp2=0;
int temp3=0;
int temp4=0;
int temp5=0;
int temp6=0;
int temp7=0;
int temp8=0;
int temp9=0;
int temp10=0;
int temp11=0;
int temp12=0;
int temp111=0;
int temp222=0;
int temp333=0;
BLYNK_READ(V6){
Blynk.virtualWrite(V6, estadoldr);}
void setup(){
Serial.begin(9600);
Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 8442);
pinMode(s1, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/
pinMode(s2, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/
pinMode(s3, INPUT); /*activación del pin 8 como entrada: tiempo del rebote del ultrasonido*/
pinMode(ldr,INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
digitalWrite(led3,HIGH);
digitalWrite(led4,HIGH);
}
void loop(){
Blynk.run();
estados1=digitalRead(s1);
estados2=digitalRead(s2);
estados3=digitalRead(s3);
estadoldr=analogRead(ldr);
Serial.println(estadoldr);
if (estados1==HIGH&&estados2==LOW&&estados3==LOW) { temp1++; temp111=0;} else{temp1=0;temp2=0;temp111++;}
if (temp1 == 1&&estadoldr<lumenes){temp2=1;
tempp1 = millis();
cont1 = tempp1+ ret1;
cont2 = tempp1+ ret2;
}
if (temp2 == 1) {digitalWrite(led4,LOW);digitalWrite(led1,LOW);
if (millis()>= cont1){digitalWrite(led2,LOW);}
if (millis()>= cont2) {digitalWrite(led3,LOW);}
}
if(estados1==LOW&&temp222>1&&temp333>1&&temp111==1){temp3++;} else {temp3=0;temp4=0;}
if(temp3 == 1){temp4=1;
tempp2=millis();
cont3 = tempp2+ ret1;
cont4 = tempp2+ ret2;
}
if (temp4 == 1 ){digitalWrite(led1,HIGH);
if (millis()>= cont3) {digitalWrite(led2,HIGH);}
if (millis()>= cont4) {digitalWrite(led3,HIGH);digitalWrite(led4,HIGH);
} temp111=0;
}
if (estados2==HIGH&&estados1==LOW&&estados3==LOW) { temp5++; temp222=0;} else{temp5=0;temp6=0;temp222++;}
if (temp5 == 1&&estadoldr<lumenes){temp6=1;
tempp3 = millis();
cont5 = tempp3+ ret1;
}
if (temp6 == 1) {digitalWrite(led4,LOW);digitalWrite(led2,LOW);
if (millis()>= cont5){digitalWrite(led1,LOW);digitalWrite(led3,LOW);}
}
if(estados2==LOW&&temp111>1&&temp333>1&&temp222==1){temp7++;} else {temp7=0;temp8=0;}
if(temp7 == 1){temp8=1;
tempp4=millis();
cont6 = tempp4+ ret1;
}
if (temp8 == 1 ){digitalWrite(led1,HIGH);digitalWrite(led3,HIGH);
if (millis()>= cont6) {digitalWrite(led2,HIGH);digitalWrite(led4,HIGH);}
temp222=0;
}
if (estados3==HIGH&&estados2==LOW&&estados1==LOW) { temp9++;temp333=0; } else{temp9=0;temp10=0;temp333++;}
if (temp9 == 1&&estadoldr<lumenes){temp10=1;
tempp5 = millis();
cont7 = tempp5+ ret1;
cont8 = tempp5+ ret2;
}
if (temp10 == 1) {digitalWrite(led4,LOW);digitalWrite(led3,LOW);
if (millis()>= cont7){digitalWrite(led2,LOW);}
if (millis()>= cont8) {digitalWrite(led1,LOW);
}
}
if(estados3==LOW&&temp111>1&&temp222>1&&temp333==1){temp11++;} else {temp11=0;temp12=0;}
if(temp11 == 1){temp12=1;
tempp6=millis();
cont9 = tempp6+ ret1;
cont10 = tempp6+ ret2;
}
if (temp12 == 1 ){digitalWrite(led3,HIGH);
if (millis()>= cont9) {digitalWrite(led2,HIGH);}
if (millis()>= cont10) {digitalWrite(led1,HIGH);digitalWrite(led4,HIGH);}
temp333=0;
}
}
Incluyo dibujo para que se entienda mejor, muchísimas gracias!!