volevo chiedere come faccio a bloccare su un numero fisso una variabile se cerca di cambiare di un digit,
esempio misuro un voltaggio di 4.45 volt se poi diventa/viene misurato 4.44 o 4.46 devo spedire al display sempre 4.45,
se si sposta di due digit o più es 4.43 o 4.90 2.11 devo leggere il nuovo valore e allo stesso modo,
se il nuovo valore si sposterà di un solo digit non deve cambiare
elrospo:
volevo chiedere come faccio a bloccare su un numero fisso una variabile se cerca di cambiare di un digit,
Basta che applichi una isteresi al valore, se la variazione è dentro questa la visualizzazione non cambia, se è al di fuori aggiorni il valore visualizzato.
In pratica devi fare un if al cui interno paragoni la lettura attuale con quella precedente aumentata e diminuita del valore di isteresi.
Una cosa tipo questa:
if( NewValue > (OldValue+Isteresi) || NewValue < (OLdValue-Isteresi))
{
AggiornaDisplay();
OldValue=NewValue;
}
astrobeed:
Basta che applichi una isteresi al valore, se la variazione è dentro questa la visualizzazione non cambia, se è al di fuori aggiorni il valore visualizzato.
In pratica devi fare un if al cui interno paragoni la lettura attuale con quella precedente aumentata e diminuita del valore di isteresi.
Una cosa tipo questa:
if( NewValue > (OldValue+Isteresi) || NewValue < (OLdValue-Isteresi))
{
AggiornaDisplay();
OldValue=NewValue;
}
Ok grazie mille ma in questo caso se la lettura aumenta/diminuisce linearmente no n invio mai niente di nuovo al display
ci vuole un qualcosa in piu ma non ho idea,
es se ho le seguenti letture consecutive 4.10 4.11 4.12 4.13 4.14 4.16 alla fine il display non si schioda da 4.10
impossibile...
Ma quanto hai assegnato come isteresi ?
Hai tenuto conto che si tratta di un Float ?
Scusa ma non puoi usare una media?
Magari su un campione abbastanza significativo di valori (tanto la lettura è molto veloce).