sto provando questo sketc a volte funziona a volte no
e piu precisamente sembra che ha la tendenza ad arrotondare la cifra immessa
MA CHI GLIELO HA ORDINATO IL MEDICO!!!!!!!!!!!!! ]
ES: il valore 577.777 allinizio la prende (secondo il serial print 577.78)
e poi diventa 577.77696 =(
esempio se metto
valore_reale = 444.444;
tutto fila liscio il serial print da punto sulla 4 cifra (partendo da destra) e valore da inviare 444444 corretto,
l'idea di questo sketct è quello di prendere il numero
come int e float
sottrare float da int se da diverso da zero moltiplico per 10 e un contatore che e a 1 aumeta di un unita (posizione punto decimale)
se c'è un sistema per non fare arrotondare il float siamo sulla buona strada
unsigned long mela;
float pesca;
float valore_reale;
byte posizione_punto_sulla_cifra =1;
float k=0;
unsigned long p;
void setup() {
Serial.begin(9600);
valore_reale = 444.444; //cifre massime 7
//if (valore_reale > 1 && valore_reale <10) valore_reale = valore_reale * 1000000;
pesca = valore_reale; //cifre massime 7
}
void loop()
{
mela= pesca;
if (pesca-mela>0) posizione_punto_sulla_cifra = posizione_punto_sulla_cifra + 1, pesca = pesca*10;
Serial.print("posizione_punto_sulla_cifra ");
Serial.println(posizione_punto_sulla_cifra);
Serial.print("valore_reale ");
Serial.println(valore_reale, (posizione_punto_sulla_cifra-1) );
if(posizione_punto_sulla_cifra == 1) p= 1;
if(posizione_punto_sulla_cifra == 2) p= 10;
if(posizione_punto_sulla_cifra == 3) p= 100;
if(posizione_punto_sulla_cifra == 4) p= 1000;
if(posizione_punto_sulla_cifra == 5) p= 10000;
if(posizione_punto_sulla_cifra == 6) p= 100000;
if(posizione_punto_sulla_cifra == 7) p= 1000000;
//if (valore_reale > 999999) posizione_punto_sulla_cifra =posizione_punto_sulla_cifra-1;
//if (valore_reale > 999999) valore_reale =valore_reale/10;
Serial.print("valore da mandare al display ");
Serial.println(valore_reale*p,0 );
}