Go Down

Topic: Saluti e domanda da topotti (Read 845 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