Come Gestire l'Overflow di millis() su Arduino

Come Gestire l'Overflow di millis() su Arduino
Hai mai riscontrato problemi con la funzione millis() su Arduino? In questo video, esploriamo in dettaglio il problema dell'overflow di millis() e come gestirlo efficacemente nei tuoi progetti. La funzione millis() è una delle più utilizzate per misurare il tempo trascorso, ma dopo circa 50 giorni di funzionamento continuo, il contatore si azzera, causando potenziali malfunzionamenti nei tuoi sketch.
- Cos'è la funzione millis() e come funziona.
- Perché e quando si verifica l'overflow di millis().
- Come rilevare e gestire l'overflow per assicurare che i tuoi progetti Arduino continuino a funzionare correttamente.
- Esempi pratici di codice per implementare soluzioni robuste.
codici:
Video 84x - Playlist Arduino
Abbonati a questo canale per accedere a contenuti e corsi esclusivi
/ @zeppelinmaker
Info abbonamenti: www.zeppelinmaker.it/abboname...
Canale Telegram: t.me/zeppelinmaker
Forum/Gruppo Telegram: t.me/forumzeppelinmaker
Codice: github.com/zmaker/arduino_coo...
Shop Libri e Componenti: www.amazon.it/shop/paoloaliverti
Libri:
- "Arduino trucchi e segreti" - amzn.to/2zvM2S8
- "Il manuale di Arduino" (va bene per chi inizia): amzn.to/2WQLzlw
- "Progettare con Arduino": amzn.to/3mMfKXZ
Puoi scaricare gratuitamente i miei libri:
- "Il manuale di Arduino - gumroad.com/l/arduino
- "Il cookbook di Arduino": gumroad.com/l/arduinocookbook
Altre informazioni e sul libri mio sito: - www.zeppelinmaker.it/libri/
Indice dei video:
www.zeppelinmaker.it/arduino100/
La playlist elettronica: bit.ly/2ICzhGS
La playlist su Arduino: bit.ly/2SNTKf4
La playlist coding sul: bit.ly/2B1uuL2
Come cercare tra i miei video:
• Canale KZread di Paol...
Che cosa uso come lavagna digitale? OpenBoard (www.openboard.ch). + tavoletta wacom (amzn.to/3t2Fynd)
• Che strumenti utilizzo...
- Per offrirmi un caffè: www.zeppelinmaker.it/vuoi-off...
- Vuoi chiedere un video su un argomento particolare? www.zeppelinmaker.it/vuoi-chie...
ATTENZIONE: Per ovvi motivi di tempo non posso correggere o analizzare gli sketch e schemi che postate nei commenti o che inviate via mail. Cerco di rispondere a tutte le domande e le richieste sensate ma sono veramente troppe: abbiate pazienza!
#arduino

Пікірлер: 22

  • @ioalessa
    @ioalessa15 күн бұрын

    Tanto semplice quanto geniale!!!!! TI PREGO metti tutti questi tips in un libroooooo😭

  • @zeppelinmaker

    @zeppelinmaker

    8 күн бұрын

    mi pare ce ne siano già due! Manuale di Arduino e Arduino trucchi e segreti

  • @princopallinus2983
    @princopallinus298324 күн бұрын

    Grazie Tante, Paolo! Ottimo punto alternativo d"interpretazione delle funzioni. 👍 Complimenti! 🤩✌️

  • @mawysk8r
    @mawysk8r24 күн бұрын

    Ottima spiegazione del meccanismo! Grazie mille.

  • @hbelettronica
    @hbelettronica24 күн бұрын

    Grazie Sig. Paolo come al solito sempre esaustivo !👍

  • @frankmiller1121
    @frankmiller112124 күн бұрын

    interessante ed utile

  • @lucasartorio9203
    @lucasartorio920323 күн бұрын

    Complimenti

  • @paolinide
    @paolinide24 күн бұрын

    Semplice ed efficace, ma affatto banale. Grazie.

  • @danielesegata9559
    @danielesegata955920 күн бұрын

    Buongiorno Guardo con interesse i tuoi video, volevo chiedere se avendo un arduino mega con ethernet shield è possibile ottenere la stampa della seriale tramite ethernet o una pagina web? Grazie

  • @enricooleari9315
    @enricooleari931519 күн бұрын

    Scusa l'ignoranza ma non si potrebbe mettere un "if" che controlla il valore di "millis()" che nel caso resetta la variabile di controllo "t1"?

  • @nuovovideo
    @nuovovideo24 күн бұрын

    dovesse andare in overflow e resettando l arduino , tornerebbe tutto a posto ? oppure l arduino non funziona piu ed ė da sostituire?

  • @WeaverSpider

    @WeaverSpider

    24 күн бұрын

    resettando si ricomincia d'accapo, così anche se spegni e riaccendi; millis() misura il tempo di esecuzione dello sketch.

  • @you2ber252

    @you2ber252

    23 күн бұрын

    Mo no che non si brucia! Non puoi fare niente via software per danneggiare fisicamente il chip! Questo a meno che il chip non sia mal progettato, ma non è certamente il caso di un overflow di una variabile! 🤭

  • @MizzardNote11s-yx1cj
    @MizzardNote11s-yx1cj23 күн бұрын

    Non è un procedimento corretto poiché il "T1" non viene aggiornato oltre al fatto che si sfrutta sempre e comunque l'over flow della variabile che non su tutte le schede può funzionare... Può dare problemi di criticità

  • @_Francesco_97
    @_Francesco_9723 күн бұрын

    Ciao Paolo, attenzione, come soluzione non so se risolve il poblema. Perchè se pensi alla situazione in cui (caso peggiore) t1 = 2^32 - 1 ed il millis() è appena andato in overflow (supponiamo adesso valga 2) -> nella condizione dell'if avrei ( 2 - ( 2^32 - 1) > 2000) che non è vera e non diventerà vera finchè il millis() non diventa maggiore di 2^32 - 1, il che è impossibile! Quindi in quella situazione tutto si blocca. Non sarebbe meglio se ad ogni ciclo, salvassi il valore di miilis() in una variabile es. millisGiroPrecedente e verificassi che: if ( millisGiroPrecedente > millis() ) allora --- situazione di overflow e quindi setto tutti i miei timer uguali al millis attuale Fammi sapere se torna anche te.😀 Grazie per i tuoi video, sono sempre super chiari e dettagliati. Un saluto

  • @bernysaudino668
    @bernysaudino66822 күн бұрын

    Al posto del 2*2*....*2 n volte si potrebbe usare anche 1

  • @bernysaudino668

    @bernysaudino668

    18 күн бұрын

    In alternativa si può lavorare con il codice esadecimale anziché decimale, per quanto riguarda il massimo valore di unsigned long si può usare 0xffffffff

  • @bernysaudino668

    @bernysaudino668

    18 күн бұрын

    Per quanto riguarda 10 millisecondi prima 0xfffffff6

  • @bernysaudino668

    @bernysaudino668

    18 күн бұрын

    Per quanto riguarda 3 millisecondi prima 0xfffffffd 5, 0xfffffffb ecc.

  • @luigibrunomanzini253
    @luigibrunomanzini25324 күн бұрын

    Grazie !! infatti mi serve per un controllo di allarme che fa scansione di sensori nel tempo.

  • @MizzardNote11s-yx1cj
    @MizzardNote11s-yx1cj23 күн бұрын

    Già nel video dove hai spiegato i timer non bloccanti avevo scritto tale esempio ancora più semplice: If(T1 != millis()){ //Code T1 = millis() }

  • @lucianodipaolo2428
    @lucianodipaolo242823 күн бұрын

    ciao Paolo piu' chiaro di cosi si muore