Salve a tutti, sto costruendo una sveglia con wemos d1 mini, modulo rtc, ds18b20, buzzer,display lcd e un bottone
funziona bene secondo quello che voleva, l'unica cosa è che quando la sveglia è attivata per suonare e l'orario è giusto il buzzer suona però anzichè suonare per 200ms ogni 200ms si accorda all'aggiornamento della temperatura del sd18b20l producendo un suono discontinuo in base alla variazione della temperatura
a questo punto vorrei cercare di separare separare la lettura del sensore dal suono del buzzer o come minimo bloccare la lettura temperatura quando il buzzer è attivo
Il modo più semplice nel codice presentato è quello di mettere lettura temp e aggiornamento display sotto una condizione. Quando è il momento di suonare fai in modo che la condizione diventi falsa, quando il suono è finito la riabiliti. È sufficiente un'altra variabile di stato.
Oltre a questo, non è necessario misurare e scrivere sul display ad ogni ciclo di programma. Basta farlo una volta al secondo per quanto riguarda l'orario, e una volta ogni tot secondi per la temperatura. Già questo ridurrebbe di molto l'impegno della CPU. Però per fare questo bisogna imparare a gestire i tempi con la funzione millis evitando i delay nel codice.
praticamente ... devi studiarti come si usa la funzione millis(), prima QUI, poi QUI e QUI e QUI e tutti gli articoli che sono in QUESTA pagina ... vedrai che poi ti sarà tutto più chiaro ...
Se durante l'esecuzione dei suoni leggi anche il sensore (750 ms) per forza di cose durante quel tempo (in questo caso ogni tre secondi) si crea una pausa. È giusto leggere il sensore ogni tot secondi per non occupare tutto il tempo CPU, ma comunque solo quando non è attiva la suoneria.