torn24:
Riflettendo sul tuo codice iniziale, mi sembra che il problema che non lo fa funzionare correttamente sia la mancata aggiornamento della variabile tempo con la funzione millis()Non so se è corretto prova a vedere, potrebbero esserci degli errori.
byte flag1=1,flag2=1;
void loop () {
pul_p = digitalRead (PULSANTEP);
pul_m = digitalRead (PULSANTEM);
diminuisci();
aumenta();
salva();
t = SHT2x.GetTemperature();
h = SHT2x.GetHumidity();
if (valore <= h) {
if(flag1){// Eseguo una sola volta
tempo_1=millis();
flag1=0; //evita che venga ripetuto questo codice
}
if (millis() - tempo_1 > (pausa_1)) {
digitalWrite (LED, HIGH);
flag2=1; // Predispone la pausa a umidità maggiore
}
}
if (valore > h) {
if(flag2){// Eseguo una sola volta
tempo_2=millis();
flag2=0;
}
if (millis() - tempo_2 > (pausa_1)) {
digitalWrite (LED, LOW);
flag1=1; // predispone la pausa a umidità minore
}
}
}
Perfetto, funziona, con le variabili flag il problema si risolve, ho capito dove stava il problema ed ho imparato una nuova cosa. torn24, grazie ancora per avermi aiutato in maniera chiara, la capacità di saper dare nozioni in modo funzionale all'apprendimento non è da tutti.