Pages: [1]   Go Down
Author Topic: Saluti e domanda da topotti  (Read 653 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 2
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

  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.
Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 235
Posts: 20227
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 2
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
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
Logged

Pages: [1]   Go Up
Jump to: