Salve a tutti, sono nuovo di questo forum.... da poco sto usando arduino... diciano che a livello elettronico non ho nessun problema ma a livello software.... sto realizzando un flussometro carburante per il mio gommone.... ma sto avendo problemi a memorizzare il file mi spiedo il file memorizzato oltre a data ora memorizza due variabili "consumo totale" e consumo istantaneo sono variabili con virgola cioè float...ma non riesco con il comando sprintf a memorizzare bene il file mi aiutate? no so se per i float va bene... %2.2f %2.2f solo che mi esce un punto interrogativo al posto del valore
questo è il codice.
Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare.
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.
La sprintf() per gli AVR non supporta la %f, in quanto quel codice è molto pesante.
Puoi usare la dtostrf() per conversione da float a testo:
Oppure puoi stampare due long per ogni float, la parte intera e la parte decimale con un carattere punto '.' in mezzo.
Passi per la parte intera a long, fai un cast. A litri_tot aggiungi solo (long)litri_tot e così hai la parte intera stampabile con %2d
Per la parte decimale, dovrebbe bastare il calcolo (litri_tot-(long)litri_tot)*100 ottenendo così 2 dei decimali.
Oppure puoi stampare due long per ogni float, la parte intera e la parte decimale con un carattere punto '.' in mezzo.
Passi per la parte intera a long, fai un cast. A litri_tot aggiungi solo (long)litri_tot e così hai la parte intera stampabile con %2d
Per la parte decimale, dovrebbe bastare il calcolo (litri_tot-(long)litri_tot)*100 ottenendo così 2 dei decimali.
grazie ho risolto grazie a dtostrf() ho creato due stringe da passare poi a sprintf con %s ora tutto funziona alla grande.