Buen dia compañeros, les comento , tengo un proyecto funcionando sin problemas a travez de un webserver montado en Arduino Mega y ehternet shield v.2 w5500.
El proyecto consiste en hacer fade a un led en 3 estados (HIGH-MID-LOW) y un control para activar unos relevadores por un tiempo determinado.
El problema es que cuando la luz esta apagada y la mando encender a travez de la webpage tarda aproximadamente 10 segundos en lo que ejecuta la accion, por lo que ya no puedo ejecutar otro comando como activar alguno de los relays hasta que se termine la ejecucion.
Es por eso que necesito reemplazar la funcion Delay por Millis para que sea multitask y no tenga que esperar el tiempo del Delay.
Agradezco infinitamente su ayuda ya que por mas que he repasado el asunto de los Millis, creo que aun no me queda muy claro y tengo muchas dudas.
Adjunto el codigo ya que por espacio solo puedo poner algunas lineas.
Gracias.
// DIMMER CONTROL //
if (readString1 == "DIM1=T" && state4 == "LOW" )
{
for (brillo = EEPROM.read(2); brillo <= EEPROM.read(0); brillo ++) {
analogWrite(7, brillo);
delay(d);
}
state4 = "HIGH";
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LIGHTS HIHG");
lcd.setCursor(0,1);
lcd.print("MASKING");
lcd.setCursor(9,1);
lcd.print(state5);
}
else if (readString1 == "DIM1=T" && state4 == "MEDIUM" )
{
for (brillo = EEPROM.read(1); brillo <= EEPROM.read(0); brillo ++) {
analogWrite(7, brillo);
delay(d);
}
state4 = "HIGH";
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LIGHTS HIHG");
lcd.setCursor(0,1);
lcd.print("MASKING");
lcd.setCursor(9,1);
lcd.print(state5);
}
if (readString1 == "DIM2=T" && state4 == "HIGH")
{
for (brillo = EEPROM.read(0); brillo >= EEPROM.read(1); brillo --) {
analogWrite(7, brillo);
delay(d);
}
state4 = "MEDIUM";
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LIGHTS MEDIUM");
lcd.setCursor(0,1);
lcd.print("MASKING");
lcd.setCursor(9,1);
lcd.print(state5);
}
else if (readString1 == "DIM2=T" && state4 == "LOW")
{
for (brillo = EEPROM.read(2); brillo <= EEPROM.read(1); brillo ++) {
analogWrite(7, brillo);
delay(d);
}
state4 = "MEDIUM";
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LIGHTS MEDIUM");
lcd.setCursor(0,1);
lcd.print("MASKING");
lcd.setCursor(9,1);
lcd.print(state5);
}
if (readString1 == "DIM3=T" && state4 == "MEDIUM")
{
for (brillo = EEPROM.read(1); brillo >= EEPROM.read(2); brillo --) {
analogWrite(7, brillo);
delay(d);
}
state4 = "LOW";
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LIGHTS LOW");
lcd.setCursor(0,1);
lcd.print("MASKING");
lcd.setCursor(9,1);
lcd.print(state5);
}
else if (readString1 == "DIM3=T" && state4 == "HIGH")
{
for (brillo = EEPROM.read(0); brillo >= EEPROM.read(2); brillo --) {
analogWrite(7, brillo);
delay(20);
}
state4 = "LOW";
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LIGHTS LOW");
lcd.setCursor(0,1);
lcd.print("MASKING");
lcd.setCursor(9,1);
lcd.print(state5);
}
//MASKING CONTROL //
if (readString1 == "REL1=T" )
{
digitalWrite(22, HIGH);
delay (m);
digitalWrite(22, LOW);
state5 = "FLAT";
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LIGHTS");
lcd.setCursor(7,0);
lcd.print(state4);
lcd.setCursor(0,1);
lcd.print("MASKING");
lcd.setCursor(9,1);
lcd.print(state5);
}
if (readString1 == "REL2=T")
{
digitalWrite(23, HIGH);
delay (m);
digitalWrite(23, LOW);
state5 = "SCOPE";
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LIGHTS");
lcd.setCursor(7,0);
lcd.print(state4);
lcd.setCursor(0,1);
lcd.print("MASKING");
lcd.setCursor(9,1);
lcd.print(state5);
}
Dimmer_1_canal__ethernet_2.0.ino (25.2 KB)