Pages: 1 [2]   Go Down
Author Topic: [RISOLTO]Scrivere valore di temperatura su shield "display Nokia 6100"  (Read 1469 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10103
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
void loop()
{
  val = analogRead(potPin);                 //Leggo la temperatura da analogica
  temperature = (5.0*val*100.0/1024.0);       //converto la tensione in temperatura
  sprintf(buffer,"Gradi: %f.2", temperature );
  Serial.println (buffer);             //scrivo su seriale
  lcd.setStr(buffer, 50, 20, SLATE, RED); // scrivo su display Nokia 6600
}

notare i .0 sul calcolo: forzano l'operazione matematica ad essere fatta con i float e non con i numeri interi, altrimenti la parte dopo la virgola verrebbe troncata! (vale nel caso val sia long o int, se float non serve ma sempre meglio specificare una volta in più che una volta in meno, sono il genere di errori stupidi che fanno perdere giornate anche ai programmatori più esperti)
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

(Italy)
Offline Offline
Full Member
***
Karma: 2
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hai ragione Lesto, i decimali non erano presi in considerazione, adesso funzionano.......sono in debito di parecchi caffè.
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10103
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sommali in una birra smiley-wink
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10103
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

dimenticavo:

sprintf(buffer,"Gradi: %f.2", temperature );

il %f.2 vuol dire che vuoi visualizzare solo 2 decimali. scrivere solo %f usa i decimali che gli servono (mi pare il massimo sia 9 decimali) ma tanto la precisione è limitata sia dal sensore che dall'ADC arduino, quindi direi che 2 decimali sono il giusto.
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

(Italy)
Offline Offline
Full Member
***
Karma: 2
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

dimenticavo:

sprintf(buffer,"Gradi: %f.2", temperature );

il %f.2 vuol dire che vuoi visualizzare solo 2 decimali. scrivere solo %f usa i decimali che gli servono (mi pare il massimo sia 9 decimali) ma tanto la precisione è limitata sia dal sensore che dall'ADC arduino, quindi direi che 2 decimali sono il giusto.
Ah ok, ma perdona la mia domanda io ho fatto così, ma va bene lo stesso vero?
sprintf(buffer,"Gradi: %d.%d", temp1, temp2);
E' meglio eliminare i due interi?
Ciao
Logged

0
Offline Offline
Shannon Member
****
Karma: 117
Posts: 10103
:(){:|:&};: TOX id: fcb8e918bef08581e23f6ddf9d4dba77697c25b217bf372736ed959a95fde36df5b8c5b90fbb
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non cambia molto, è solo una questione di leggibilità del codice e risparmio delle risorse; 2 variabili int in meno, ovvero 4 byte di ram, e un po' di operazioni matematiche in meno.

in oltre col tuo loop di prima alla prima stampa buffer è vuoto perchè deve essere ancora fatta la sprintf, nulla di grave se hai inizializzato a ""
Logged

my Arduino code: https://github.com/lestofante/arduinoSketch
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

(Italy)
Offline Offline
Full Member
***
Karma: 2
Posts: 171
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, grazie per la precisazione

Ciao
Logged

Pages: 1 [2]   Go Up
Jump to: