ciao ragazzi,
leggevo qui questo modo per sostiuire delay con millis per comandare l'apertura di 6 relè, tre utilizzati per avviare l'avvolgimento e tre per lo svolgimento di quelle che oramai sono le famose tende!!
questo il link:https://www.leonardomiliani.com/2013/programmiamo-i-compiti-con-millis/
ovviamente funziona, siamo passati da:
};
void svolgiTendeGRANDESX() { //funzione srotola tenda se chiamata durante salita ferma tenda
digitalWrite(rele_chiude_sx, LOW); // chiude il rele' ( LOW=Chiude, HIGH=Apre )
delay(500);
digitalWrite(rele_chiude_sx, HIGH); // riapre il rele'
}
a:
unsigned long previousMillis = 0; //will store last time LED was updated
unsigned long interval = 500; //interval at which to blink (milliseconds)
void svolgiTendeGRANDESX() {
digitalWrite(rele_apre_sx, LOW);
Serial.println(F("low"));
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis; //save the last time you blinked the LED
//if the LED is off turn it on and vice-versa:
digitalWrite(rele_apre_sx, HIGH);
Serial.println(F("high"));
}
}
con l'utilizzo di ben tre unsigned long.. che moltiplicati ad altri 5 void fa 15...quindi 18 in totale... c'è un modo alternativo per risparmiare memoria? sono a corto...
grazie