Mein Problem ist, wie kann ich auf einem Due eine float zu einem String umbauen? Genauigkeit brauch ich auf 2 Nachkommastellen. Die Zahlen bewegen sich zwischen 6.00 und 8.40 und die sollen auf dem TFT ausgegeben werden.
Code ist aussm Kopf geschrieben, glaube aber so sieht das aus:
Der DUE hat viel mehr RAM-Speicher als die 8-Bit AVRs, so dass die %f-Gleitkommaformatierung für dieses Board nicht deaktiviert ist, sondern normal funktioniert.
Genauigkeit brauch ich auf 2 Nachkommastellen. Die Zahlen bewegen sich zwischen 6.00 und 8.40
Da sehe ich überhaupt keine Notwendigkeit für float. Arbeite mit int und dem Bereich von 600-840 und teile für die Ausgabe einfach durch 100. (Nachkommestellen (=Rest) mit modulo berechnen (%))
Wenn Zahlen außerhalb von 6-8.4 tatsächlich nicht vorkommen kannst du mit einem Offset von 6 sogar mit einem einzigen Byte auskommen. Falls der Speicher auf dem Due mal zu knapp wird.
Stimmt, ist natürlich auch eine Variante, Dankeschön.
Als Entschuldigung, das ist ein älteres Projekt auf einem Mega, was in laufe der Zeit extrem gewachsen ist. Die Spannungsanzeige war eines der ersten Module und da dies problemlos lief hab ich das nie angefasst. Jetzt beim "übersetzen" auf Due kommen halt diese ganzen alten Dinger wieder hervor.
gsezz:
Wenn Zahlen außerhalb von 6-8.4 tatsächlich nicht vorkommen
Das ist für die Spannungsanzeige des Stromliefernden Lipos. Wenn da über 8,4 stehen sollten herrscht akute Brandgefahr und wenn weniger steht mach ich mir um die Stabilität das Arduinos mehr sorgen als um die Anzeige.
Aber ich denke mal, so schnell wird der Speicher nicht knapp.
jurs:
Der DUE hat viel mehr RAM-Speicher als die 8-Bit AVRs, so dass die %f-Gleitkommaformatierung für dieses Board nicht deaktiviert ist, sondern normal funktioniert.
Der Grund weshalb die nicht implementiert ist, ist glaube ich eher Flash Speicher. Man braucht zwar auch einiges an RAM um die var_args zu übergeben und zu parsen, aber das ist für alle Parameter gleich. Die Float Formatierung frisst aber viel Flash.