Buon anno a tutti!
Vorrei sostituire il delay con millis ad un codice che viene ripetuto più volte nello sketch tramutandolo in una funzione.
Il codice è questo:
if (value_int > Apertura)
{
/*
Serial.print("Apro la tenda da posizione:");
Serial.print(Apertura);
Serial.print("% a posizione:");
Serial.print(value_int);
Serial.print("%");
*/
digitalWrite(RCH2, LOW);
delay(1800); // Attendo 1,8 secondi prima di riposizionare il relè sullo stato iniziale.
//Operazione necessaria per simulare la pressione del tasto altrimenti la centralina non riceve correttamente il comando
digitalWrite(RCH2, HIGH);
while (value_int > Apertura)
{
StampaApertura();
//Serial.println(Apertura);
}
digitalWrite(RCH2, LOW);
delay(250); //Attendo 250 millisecondi prima di riposizionare il relè sullo stato iniziale, altrimenti la centralina non processa correttamente il comando
digitalWrite(RCH2, HIGH);
client.print(F("status ok"));
/*
client.print(value_int);
client.print(",Apertura:");
client.print(Apertura);
*/
}
Chi mi aiuta a sostituire il delay(1800) e delay(250) con millis?
Io ho provato ma non ottengo i risultati voluti.
Questo è il codice che ho provato a modificare:
if (value_int > Apertura)
{
/*
Serial.print("Apro la tenda da posizione:");
Serial.print(Apertura);
Serial.print("% a posizione:");
Serial.print(value_int);
Serial.print("%");
*/
RCHT = RCH2; //Alzo la tenda
push_timer = 1800; // Attendo 1,8 secondi prima di riposizionare il relè sullo stato iniziale.
tenda_slider();
while (value_int > Apertura)
{
StampaApertura();
//Serial.println(Apertura);
}
push_timer = 250; //Attendo 250 millisecondi prima di riposizionare il relè sullo stato iniziale, altrimenti la centralina non processa correttamente il comando
tenda_slider();
client.print(F("status ok"));
/*
client.print(value_int);
client.print(",Apertura:");
client.print(Apertura);
*/
}
void tenda_slider() //Funziome per l'apertura o la chiusura parziale della tenda
{
if (millis() - t_tenda > push_timer) // Attendo 1,8 secondi prima di riposizionare il relè sullo stato iniziale.
{
t_tenda = millis();
digitalWrite(RCHT, LOW);
}
//Operazione necessaria per simulare la pressione del tasto altrimenti la centralina non riceve correttamente il comando
digitalWrite(RCHT, HIGH);
}
Grazie