Ciao a tutti,
oggi ho fatto qualche test con un sensore MCP9700A e mi sono trovatocon dei risultati anomali peri quali vi chiedo spiegazione.
In particolare ho un sensore collegato pin 1 alla 3,3 v di arduino uno, pin 2 A0, pin 3 GND
Ho un display lcd parallelo 4 bit collegato.
int pintemp = 0
int readtemp = 0;
int t2 = 0;
Vorrei capire perchè se scrivo:
_lcd.print(((5*(analogRead(pintemp)*100)/1023)-50)); _
display scrive -37
mentre se scrivo:
lcd.print(((analogRead(pintemp)0.48875)-50)); _
display scrive 27.71
_(NB 5100/1023=0.488758......)
readtemp = analogRead(pintemp);
t2 = ((5 * readtemp * 100.0 ) / 1023) - 50;
lcd.print(t2);
display scrive 23
Ho avuto anche altre anomalie che non riesco a replicare ma in pratica ho risultati diversi se memorizzo analogRead in una variabile e poi l'elaboro invece che scrivere direttamente la formula.
Io credo che la memorizzazione in variabile imposta dei limiti, tipo la variabile è solo "intera" quindi perdo la componente dietro la virgola ?
Inoltre la formula che si troa su internet x usare questo sensore ho l'impressione che possa "sforare" il numero massimo 32767 (per esempio a temperatura ambiente A0=150 per cui 1505100=75000)... potrebbe essere questo il problema ? come gestire allora numeri maggiori?
Ho fatto in verità anche dei test con il formato float ma non ho visto grandi variazioni, inoltre nella reference c'è un passaggio in cui afferma:
"Floating point numbers are not exact, and may yield strange results when compared. For example 6.0 / 3.0 may not equal 2.0. "
che non ho capito proprio.....
C'è qualcuno che mi può spiegare cosa mi sfugge?
Marco