come visualizzare i float su lcd 160128

salve a tutti!

Ho acquistato su un lcd 160128 con relativo circuito Serial Graphic LCD Backpack della Sparkfun, ecco il link:

https://learn.sparkfun.com/tutorials/serial-graphic-lcd-hookup

Ho installato anche le librerie consigliate:

#include <SerialGraphicLCD.h>

#include <SoftwareSerial.h> (il pin TX di default è il 3)

La libreria per scrivere sul 160128 lcd semplifica tutto ecco alcuni spezzoni di codice:

LCD.clearScreen();//per pulire lo schermo

LCD.setX(33);LCD.setY(10);//per posizionare il cursore

LCD.printStr("CIAO");//per scrivere

LCD.setX(70);LCD.setY(90););//per posizionare nuovamente il cursore

LCD.printNum(x);//per scrivere un numero

Poi ci sono istruzioni per disegnare cerchi,linee eccetera…

L’ultima istruzione per scrivere il numero x.

Se x è un int va bene. Ho incontrato problemi per scrivere un float, nel senso che mi tronca i numeri dopo la virgola. >:( :roll_eyes:

Domanda: Qualcuno sa risolvere questo problema e riuscire a visualizzare il float correttamente?

Grazie :smiley:

Se la funzione che stampa stringhe printStr() , accetta come argomento array di char o oggetti String.
Converti il numero in una stringa e poi stampi la stringa, non esiste differenza a schermo tra la stampa di un numero o di una stringa che rappresenta un numero.

Esempio con la classe String

https://www.arduino.cc/en/Reference/StringConstructor

float f=5.234
String stringOne =  String(f, 3);  //tre cifre decimali

printStr(stringOne.c_str());

Questo codice va bene se devi stampare un unico valore float, se invece devi aggiornare continuamente il numero potresti avere problemi con la RAM se crei continuamente un oggetto String. Esistono tuttavia delle funzioni in C che convertono un numero float in un array di char, cerca "implementazione ftoa() C" copi il codice e lo usi nel tuo programma.

Esempio implementazione ftoa()

Grande! Giusto! Non ci avevo pensato...

Mi hai dato una direzione, mille grazie, ciao buon week-end