alphagamma:
Ragazzi scusate... sono nuovo mi sono appena presentato.
Premessa, ho capito (forse) come funziona l'istruzione millis
MA
vi riporto l'esempio, scritto tra l' altro molto bene, preso dal blog di Vittorio Zuccalà..void setup(){
time=millis();
letturaluce_time=mills();
servotime=millis();
letturadati=millis();
}
void loop(){
time=millis();
if(time>letturaluce_time+5){
luce1=analogRead(SENSORELUCE1);
letturaluce_time=millis();
}
Ora io ho capito che inizializzando le tre variabili time; letturaluce; servotime con millis faccio "partire" il conto dello sketch su tutte e tre, ma nella riga if (time>letturaluce_time+5) non mi è chiara qusta cosa: come fa time ad essere maggiore dello stesso valore della variabile lettura luce+ il valore di 5? Non si dovrebbe scrivere if (time<letturaluce_time+5)? dopotutto se millis vale ad esempio 3 ms, come è possibile che 3>3+5 (vedi (time>letturaluce_time+5) ). Spero di essere stato chiaro, se c'è qualche anima pia che mi aiuta... Grazie Marco
il ciclo loop viene eseguito all'infinito e la funzione millis ritorna sempre il tempo in millisecondi trascorso dall'accensione dell'arduino... il millis viene sempe e comunque aggiornato qualsiasi cosa stia succedendo nel ciclo for (tecnicamente si direbbe che è attaccato ad un'interrupt) quindi dopo che sono trascorsi 5 millisecondi il valore time viene a prendere un valore maggiore della lettura_luce_time + 5 millisecondi entrando di fatto nel ciclo if. All'interno del ciclo if hai la nuova lettura del valore analogico ed hai un aggiornamento della variabile letturaluce_time... quindi la prossima lettura avverrà fra altri 5 millisecondi.