grazie Steve!!!! veramente gentile! grazie per i preziosi consigli!!!
questo il codice con l'implementazione della temperatura, tutto ok mi entra nell'if in caso di varizione delle 3 variabili...
//-------------- tenda da abbassare GRANDE ---------------------
// se sole o vento forte abbasso la tenda
if ((misurazione < 600 || Rotations > 28 || temperatura >= 31.3 ) && !attivaz_chiusuraGRANDE && reset_timerGRANDE == false) {
attivaz_chiusuraGRANDE = true ; // evita nuova chiusura fino a che non sono riaperte
srotolaTendeGRANDE = true; // imposto flag srotolamento in corso
inizioSvolgiTendaGRANDE = millis(); // memorizzo istate inizio operazione
svolgiTendeGRANDE(); // lancio comando srotolamento tende
}
chiedo poi, se posso, se la parte di codice sotto è corretta.... quello che succede è che dopo che le tende si sono chiuse perchè la temperatura è maggiore di 31.3(codice sopra) , la tenda si ferma,attende il tempo del timeout impostato e si richiude nuovamente e da queto momento riparte di nuovo il timeout... e solo dopo la seconda richiusura tutto funziona come da programma, ovvero se la temperatura scende sotto i 28.1 la tenda si riapre...
purtoppo pensavo di aver risolto, ma il problema si è ripresentato....
se tolgo il controllo della temperatura tutto funziona egregiamente...
// -------------- tenda da alzare GRANDE ---------------
//se poco sole e tenda srotolata
if (temperatura < 28.1 && !attivaz_aperturaGRANDE ) {
if (misurazione > 900) {
if ((millis() - startingTimeGRANDE) < TIMEOUTGRANDE) {
if (Rotations > 28){
attivaz_chiusuraGRANDE = true ;
}
}
// se c'è poco vento, sono passati almeno 10 minuti e non ci sono state folate tiro su le tende
if ( Rotations < 18 && ((millis() - startingTimeGRANDE) > TIMEOUTGRANDE) && !superamento_velocitaGRANDE) {
attivaz_aperturaGRANDE = true ; // impedisco doppio comando
arrotolaTendeGRANDE = true; // flag partenza avvolgitura
inizioSvolgiTendaGRANDE = millis(); // uso stessa variabile per memoria partenza operazione
avvolgiTendeGRANDE(); // comando avvolgimento
}
}
}