velocità dallas onewire temperatura

salve, sto avendo problemi usando un sensore dallas di temperatura. Con la libreria onewire mi ralenta tutto quando eseguo le classiche letture del sensore. A me andrebbe bene anche fare un campionamento ogni 2 3 secondi, il problema è che avendo tastiera e display ogni intervallo perdo reattità nel controllo. Come posso fare per potere comunque fare le funzioni di lettura del keypad e scrittura nel display secondo voi ? o rendere incredibilmente veloce la lettura del sensore, cosa credo impossibile ? Molti hanno questo problema, ma non trovo soluzioni efficaci .... :relaxed:

Ciao mordor, non ci siamo mai incontrati sul forum, ti do il mio personale benvenuto.
La soluzione al tuo problema è semplice, ci sono vari modi per risolverla.
La prima che mi viene in mente è che la Dallas prevede la modalità async, con la quale non hai blocchi in lettura del sensore.
A memoria ricordo che ci sono un paio di esempi nella libreria stessa

Si, dalla versione 3.7.0 è stato introdotta la possibilità di comunicazione asincrona.

[3.7.0]
Rob Tillaart was kind enough to introduce a new revision to the library, asynchronous calls. When you request a temperature you can choose to manage the delay in your own code and continue processing other data. This code is still considered beta so if you spot any issues let me know.

che però è in fase beta, quindi non esente da eventuali bug.
L'ultima versione la puoi scaricare qui --> Miles Burton - Innovative engineering for pretty much anything
L'ultima OneWire qui --> OneWire Arduino Library, connecting 1-wire devices (DS18S20, etc) to Teensy

Un limite del DS18B20 è la velocità di conversione:
9 bit (0,5°C/98ms)
10 bit (0,25°C/188ms)
11 bit (0,125°C/375ms)
12 bit (0,0625°C/750ms)

Soprattutto a 12 bit, quei 750ms sono quasi inaccettabili.

Ma c'è da dire che la temperatura basta averla ogni 2-3 secondi (come giustamente tu hai affermato), quindi nei miei progetti ho inserito nel loop un timer che consente la sua interrogazione solo dopo che è trascorso un tempo X.

Inoltre 9 o 10 bit di precisione sono più che sufficienti per ottenere un buon risultato ed il ritardo diventa più contenuto.

In progetti dove lo sketch non può essere bloccati l async è l unico metod. Perché cmq quando vai ad intterrigare il sensore, abche se una volta ogmi minuto, senza l async sempre 750ms resti bloccato

Testato, non ho mai provato la modalità di cui parli.

Tu che risultati hai ottenuto?

Funziona, parti dagli esempi inseriti nell ultima vetsione della lib