Come Gestire l'Overflow di millis() su Arduino

Поділитися
Вставка
  • Опубліковано 5 лип 2024
  • 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 UA-cam 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
    @ioalessa 15 днів тому

    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
    @princopallinus2983 24 дні тому

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

  • @mawysk8r
    @mawysk8r 24 дні тому

    Ottima spiegazione del meccanismo! Grazie mille.

  • @hbelettronica
    @hbelettronica 24 дні тому

    Grazie Sig. Paolo come al solito sempre esaustivo !👍

  • @frankmiller1121
    @frankmiller1121 24 дні тому +1

    interessante ed utile

  • @lucasartorio9203
    @lucasartorio9203 23 дні тому

    Complimenti

  • @paolinide
    @paolinide 24 дні тому

    Semplice ed efficace, ma affatto banale. Grazie.

  • @danielesegata9559
    @danielesegata9559 20 днів тому

    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
    @enricooleari9315 19 днів тому

    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
    @nuovovideo 24 дні тому

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

    • @WeaverSpider
      @WeaverSpider 24 дні тому +1

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

    • @you2ber252
      @you2ber252 23 дні тому +1

      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-yx1cj 23 дні тому

    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_97 23 дні тому

    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
    @bernysaudino668 22 дні тому +1

    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
    @luigibrunomanzini253 24 дні тому

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

  • @MizzardNote11s-yx1cj
    @MizzardNote11s-yx1cj 23 дні тому

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

  • @lucianodipaolo2428
    @lucianodipaolo2428 23 дні тому

    ciao Paolo piu' chiaro di cosi si muore