cosa "inventarsi" in caso che il dato che viene visualizzato non arrivi piu?

esempio una sonda di temperatura che all'improvviso smette di inviare il dato di temperatura come accorgersi del difetto

Mmm è molto generica come domanda, nel senso che dipende dalle circostanze: dove si trovava il sensore, che collegamenti hai utilizzato, l'affidabilità della sonda stessa, ecc ecc ecc Con un caso in particolare si potrebbero fare considerazioni "concrete"

MasterPi ha ragione. Alla domanda si puó rispondere solo se si sa che tipo di sonda si utilizza. Ciao Uwe

il sensore sonda può essere di qualsiasi tipo che invia il valore con un treno di impulsi ogni tot tempo, ovviamente se non funziona più NON può assumere il valore zero perché zero è un valore "normale"

Dipende dalla sonda, se la leggi ad esempio via Two-Wire (I2C) o Serial allora è una sonda/sensore che trasmette dati in formato seriale di tipo byte. Se la leggi tramite One-Wire, leggi i dati in formato binario come treno d'impulsi. Se è un sensore che dà un valore analogico, lo leggi con un analogRead ecc...

Ogni caso può prevedere un diverso metodo di gestione del problema.

In linea di massima, un semplice timeout con un valore predefinito completamente differente da quello che puoi normalmente ricevere basta ed avanza per capire che non è arrivato nulla. Ad esempio, anche il core di Arduino usa meccanismi simili. Se serialRead non riceve nessun dato, esso di default restituisce -1, ad indicare che non è presente nessun dato nel buffer. Normalmente tutti assegnamo la lettura ad un tipo byte per cui perdiamo tale informazione (un byte può assumere solo valori da 0 a 255), in questo caso usare un signed int aiuta a capire la condizione di "niente in arrivo".

leo72: Ad esempio, anche il core di Arduino usa meccanismi simili. Se serialRead non riceve nessun dato, esso di default restituisce -1, ad indicare che non è presente nessun dato nel buffer. Normalmente tutti assegnamo la lettura ad un tipo byte per cui perdiamo tale informazione (un byte può assumere solo valori da 0 a 255), in questo caso usare un signed int aiuta a capire la condizione di "niente in arrivo".

facciamo un esempio reale :~ sonda temperatura via seriale frequenza di aggiornamento 1 volta al secondo,

la variabile k prende il valore della temperatura se tutto funziona correttamente, la variabile ERR sta a zero se tutto funziona correttamente

se la sonda non funziona più (o si sono interrotti i cavi) passati 3 secondi come faccio a portare la variabile ERR a 1,

ovviamente se "qualcosa" restituisce -1 non può essere valido perché -1 è una temperatura valida

Se la sonda trasmette via seriale non trasmette la lettura vera ma trasmette dei dati in forma di byte che poi tu “interpreti”.
Quindi ammettiamo che devi ricevere dei dati, questo significa che QUALCOSA deve arrivare dalla seriale, anche la lettura -1 o -10 o +76 ma qualcosa deve arrivare. Se non arriva proprio nessun byte, allora hai un’arma al tuo fianco: serial.available(), che ti dice che la sonda ha spedito qualcosa all’Ardino. Basta monitorare per un certo lasso di tempo la seriale, tipo così:

byte dati = 0; //mi serve per contare i dati arrivati
byte mioArray[3]; //mi "invento" una sonda che mi spedisce 3 byte
unsigned long tempMillis = millis(); //momento dell'inizio lettura
do { //metto qui il do e non il while, così almeno una volta entra nel ciclo
    if (serial.available()) { //è arrivato qualcosa - leggo i dati
        mioArray[dati] = serial.read(); //leggo il dato e lo salvo
        dati++; //incremento l'indice
        if (dati == 3) { //sono arrivati tutti i dati richiesti
            break; //esco dal do..while
        }
    }
} while ((dati < 3) && (millis() - tempMillis < 500)); //timeout di 500 ms
if (dati < 3) { //non sono arrivati tutti i dati voluti
    ......errore
} else { //dati arrivati
    ....elaborazione
}

ok ho compreso che il tutto gira su serial.available() proverò a mettere in pratica vediamo che riesco a ottenere, tanks