Go Down

Topic: Saluti e domanda da topotti (Read 904 times) previous topic - next topic

alocin

prima di tutto ciao a tutti!!!
sono da poco possesso re di un 2009 con scheda LCD Key.
ho un problema che non riesco a risolvere.
mi spiego:
vorrei far visualizzare la temperatura sul diplay
ma non riesco a far in modo a visualizzare i decimali.
se non ho capito male per visualizzare qualcosa sul diplay devo passarlo come stringa. ma i valori che devo visualizzare sono di tipo "float".
riesco solo a far visualizzare i gradi interi. :-[
Code: [Select]

 char str1[6];
 int temper;
 float data;
 char buf[100];
 data = temp;

 sprintf(buf,"%f", temp);

 temper = int( temp) ;
 itoa (temper,str1,10);
 
 lcd1.init();
 lcd1.clear();            
 lcd1.cursorTo( 0, 0 );
 lcd1.printIn( "Temp.: ");
 lcd1.printIn( str1 );
 lcd1.print(temper);
 lcd1.print( ' ' );
 lcd1.print( 'C' );


come si può vedere dal codice non sono proprio esperto (le sto provando tutte) ma sto facendo il possibile.

grazie a tutti.

uwefed

converti float in int e stampa gli interi, manda il punto e sottrai dal float gli interi (Ti restano i decimali) moltiplicho per 10 o 100 ( per avere 1 o 2 posizioni) e converti di nuovo in int.
Se il numero é minore di 10 e vuoi 2 cifre stampi un 0 e poi il numero.
Ciao Uwe

alocin

volevo ringraziarti per il consiglio.
GRAZIE!!!!!!
ora devo solo implementare quando o decimali e gli interi sono ad una cifra.

Code: [Select]

int temper, temp_int,decim_int;
 float temp_dec_f;
 char temp_str[6];
 char decim[3], interi[3];
 char temp_finale[6];

Serial.print ( "temp: " );          // temperatura al PC
Serial.println( temp );             // temperatura al PC

 temp_int = int( temp) ;           // cambio in int
Serial.print( "temp_int: " );       // cambio in int
Serial.println( temp_int );         // cambio in int

 temp_dec_f = temp - temp_int;     // mi trovo i decimali
Serial.print( "temp_dec_f: " );     // mi trovo i decimali
Serial.println( temp_dec_f );       // mi trovo i decimali

 decim_int = temp_dec_f * 100;     // trasformo i decimali in intero
Serial.print( "decim_int: " );      // trasformo i decimali in intero
Serial.println( decim_int );        // trasformo i decimali in intero

 itoa (temp_int,interi,10);        // temp interi
Serial.print ( "interi: " );        // temp interi
Serial.println( interi );           // temp interi
  itoa (decim_int,decim,10);
Serial.print ( "decim: " );      
Serial.println( decim );      

 strcpy (temp_finale, interi);     // mi trovo la temp finale
 strcat (temp_finale, ".");        // mi trovo la temp finale
 strcat (temp_finale, decim);      // mi trovo la temp finale
Serial.print ( "temp_finale: " );  
Serial.println( temp_finale );  


grazie ancora. ciao

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy