Ciao a tutti, ho letto in molte discussioni di questo forum che viene consigliato di usare millis al posto di delay.
Il motivo credo sia perchè delay blocca il loop finchè non termina il tempo impostato mentre millis no, però guardando come funziona
mi sembra di aver capito che comunque devo essere io che mi costruisco una apposita routine che in questo caso calcola i millisecondi tracorsi ad ogni esecuzione del loop.
A questo punto, credo che millis sia da utilizzare quando ci sono valori alti di attesa e non quando ci sono quei 10-20 millisecondi.
Ho capito male o esiste un modo diverso di gestire la cosa?
Grazie.
Ciao.
Indipendentemente da quanto tempo deve passare, millis è utile quando appunto vuoi che il tuo codice esegua qualcos'altro, nel frattempo.
Non importa se passano 10, 100 o 1000 millisecondi, l'importante è non avere il codice fermo "a guardare l'orologio" XD
Un esempio chiaro è Blink Without Delay contenuto in quelli dell'IDE di Arduino.
Stefanoxjx:
mi sembra di aver capito che comunque devo essere io che mi costruisco una apposita routine che in questo caso calcola i millisecondi tracorsi ad ogni esecuzione del loop.
A questo punto, credo che millis sia da utilizzare quando ci sono valori alti di attesa e non quando ci sono quei 10-20 millisecondi.
Sí giusto;
Se si puó usare con 10 o 20 mS di attesa il delay() o no, non so risponderti; dipende adal codice e da quello che vuoi fare. ci sono situazioni che aspettare 10mSec sono troppi.
Ciao Uwe
Stefanoxjx:
Ciao a tutti, ho letto in molte discussioni di questo forum che viene consigliato di usare millis al posto di delay.
Il motivo credo sia perchè delay blocca il loop finchè non termina il tempo impostato mentre millis no, però guardando come funziona
mi sembra di aver capito che comunque devo essere io che mi costruisco una apposita routine che in questo caso calcola i millisecondi tracorsi ad ogni esecuzione del loop.
A questo punto, credo che millis sia da utilizzare quando ci sono valori alti di attesa e non quando ci sono quei 10-20 millisecondi.
Ho capito male o esiste un modo diverso di gestire la cosa?
Grazie.
Ciao.
esiste un modo diverso. leggi i millisecondi attuali, ci sommi i millisecondi di attesa e salvi in unsigned long. Quando la prossima lettura di millis è > del valore salvato, il "delay" è terminato.
sei tu che devi costruirti la routine, ma come vedi è un if, 2 millis() (o micros) e una somma.
Grazie a tutti delle risposte.
Chiarito tutto e ricevuto il messaggio XD