Ciao a tutti. Probabilmente questa questione é giá stata affrontata piú e piú volte, tuttavia non riesco ad uscirci, di nuovo.
Poniamo il caso che io abbia questo codice:
float alfa = 25.85763;
Serial.println(alfa); //tutti i decimali, nessuno escluso
float beta = ((float)((int)((float)(alfa*10))))/10; //porto alfa ad un decimale, salvandola su beta
Serial.println(beta);
lcd.setCursor(21,3);
lcd.print(beta);
La variabile beta, sia su Seriale che su lcd, dovrebbe avere un solo decimale. Invece, si presenta cosí:
Beta su lcd/Seriale: 25.80
Io lo zero finale non lo voglio, perché non mi serve e sovrascrive altro testo successivo sul display.
Ho letto la questione che esiste una libreria la quale permette di utilizzare una scrittura simile alla seriale, come:
lcd.print(Valore,1);
Tuttavia mi risulta impossibile utilizzarla, perché io sto lavorando su un display 40x4 non, e ripeto non i2c.
C'é un modo per togliere lo zero di mezzo? Grazie in anticipo per l'aiuto.
ma dare una scorsa al reference non si fa più?
print() è una e comune a tutti gli stream
fare print(variabilenumerica, numerodicifre) è addirittura tra gli esempi del reference
inoltre vedo una certa mancanza di "fantasia": anche ammesso che non fosse possibile ridurre il numero di cifre significative, trattandosi di stampa su LCD basterebbe "dopo" riposizionare il cursore e metterci un bello spazio
pensare "easy", sempre
dare una letta a "aiutateci ad aiutarvi", sempre
Standardoil:
anche ammesso che non fosse possibile ridurre il numero di cifre significative, trattandosi di stampa su LCD basterebbe "dopo" riposizionare il cursore e metterci un bello spazio
In questo caso non potrebbe:
Io lo zero finale non lo voglio, perché non mi serve e sovrascrive altro testo successivo sul display.
Ma a questo punto non sappiamo se il numero di cifre PRIMA della virgola è sicuramente costante...
Basterebbe stampare il numero "temporalmente" prima del testo, che così sovrascriverebbe il numero, evitando anche di dover usare uno spazio. Sempre poca fantasia vedo
e se anche il numero di cifre intere è incostante abbiamo anche poca analisi oltre che poca fantasia
Standardoil:
ma dare una scorsa al reference non si fa più?
print() è una e comune a tutti gli stream
fare print(variabilenumerica, numerodicifre) è addirittura tra gli esempi del reference
inoltre vedo una certa mancanza di "fantasia": anche ammesso che non fosse possibile ridurre il numero di cifre significative, trattandosi di stampa su LCD basterebbe "dopo" riposizionare il cursore e metterci un bello spazio
pensare "easy", sempre
dare una letta a "aiutateci ad aiutarvi", sempre
Ti dico subito perché entrambe le tue idee non vanno bene:
Print: come già detto nel primo post, ho provato e non funziona, perciò è subito da scartare
Stampare uno spazio sul secondo decimale: non si può, e ti dico subito il perché:
Al posto del secondo decimale, ci deve andare il simbolo del grado, che effettuo con char(223)
Se anche andassi a stampare il simbolo per nascondere il secondo decimale, non funziona: la stampa non è nitida e pulita, perché c'è un continuo sfarfallio dovuto al cambio tra numero e simbolo.
Proverò il metodo del codice descritto nel secondo post, e vi farò sapere.
In pratica tale funzione dovrebbe convertire la float alfa in char beta, 3,1 sta ad indicare che la char dovrà contenere 3 numeri, e 1 decimale.
grazie mille per l'aiuto, funziona. All'inizio mi ero preoccupato, dato che, scrivendo "dtostrf" non si evidenziava il testo, peró ha compilato e caricato tranquillamente, risolvendomi il problema.
Grazie ancora per l'aiuto.
Standardoil:
Basterebbe stampare il numero "temporalmente" prima del testo, che così sovrascriverebbe il numero, evitando anche di dover usare uno spazio. Sempre poca fantasia vedo
Dipende dal testo: se è un testo fisso, auspicabilmente lo scrive una sola volta all'inizio.
Purtroppo, come spieghi efficacemente in "aiutateci ad aiutarvi", è difficile aiutare senza sapere cosa si vuole ottenere.
Lo stesso vale per l'altro discorso:
e se anche il numero di cifre intere è incostante abbiamo anche poca analisi oltre che poca fantasia
Senza sapere da dove viene quel numero, è impossibile sapere se il numero di cifre intere è costante.
Il postatororiginale ci ha dato quel numero così, senza indicarne l'origine.
paulus1969:
Dipende dal testo: se è un testo fisso, auspicabilmente lo scrive una sola volta all'inizio.
Purtroppo, come spieghi efficacemente in "aiutateci ad aiutarvi", è difficile aiutare senza sapere cosa si vuole ottenere.
Lo stesso vale per l'altro discorso:
Senza sapere da dove viene quel numero, è impossibile sapere se il numero di cifre intere è costante.
Il postatororiginale ci ha dato quel numero così, senza indicarne l'origine.
Il numero e' di una misura di temperatura, dove variano sia i decimali che le unita'