Benötige Hilfe um einen Messwert in eine Definiertelänge zubekommen

Hallo,

ich habe einen GPS Tacho für ein Mofa gebastelt mit GPS gestützter Distanzberechnung nun zu meinem Problem da sich der Wert natürlich ändert und dieser ja gespeichert bleiben soll wenn der µ-Controller stromlos ist lasse ich diesen auf eine SD-Karte schreiben und bei Neustart wieder auslesen. Da aber der Wert immer mehr stellen bekommt kann ich ihn mit der mir bekannten Methode nicht auslesen.

Gibt es eine Möglichkeit an den Wert führende Nullen anfügen:

z.B.: 1234 zu 00001234 machen

Vielen Dank für euer Hilfe

Es geht also im Speziellen um den Gesamt- oder Tageskilometerzähler, der so dargestellt werden soll? Über die sprintf-Funktion kann man Werte entsprechend formatieren, Google-Stichworte wären dann "sprintf führende Nullen".

Ja genau es geht um den Gesamt Kilometerzähler.

Danke für die rasche Antwort.
Könnte ich mich nochmals melden falls Ich für sprintf noch mehr Hilfe brauch?

Vielen Dank

Hallo, wenn es nur um den Kilometerzähler geht, könntest du den eeprom nutzen. Eine eeprom Adresse kann 8-Bit speichern, 0-255. Es sind 512 Adressen da.

Ich habe kein Arduino hier, daher irgendwie:

adress = kilometerstand / 255 ;
kilometerstand_tmp = kilometerstand - adress * 255;
Einfach zyklisch mit "EEPROM.update(address, kilometerstand_tmp);" updaten.

Dann musst du zum Start mit "EEPROM.read(address);" den ersten (adress = 0) auslesen, wenn der =255 dann den wert plus adress+1 wenn der =0 dann hast du den Kilometerstand.

Die mögliche Zahl sollte für eine Mofa ausreichen. :smiley:

Da aber der Wert immer mehr stellen bekommt kann ich ihn mit der mir bekannten Methode nicht auslesen.

Ja genau es geht um den Gesamt Kilometerzähler.

Was das eine mit dem anderen zu tun hat, weißt wohl nur du.

Mir scheint, du buddelst auf einer falschen Baustelle, denn bei den üblichen Integer Typen, kommen keine Stellen hinzu. Wie auch, sie bilden eine begrenzte Menge ab. Die Grenze ist nicht verschiebbar.
Irgendwelche exotischen Extrawürste machen hier sicherlich keinen Sinn


Dann musst du zum Start mit "EEPROM.read(address);" den ersten (adress = 0) auslesen, wenn der =255 dann den wert plus adress+1 wenn der =0 dann hast du den Kilometerstand.

Man wählt einen hinreichend großen Integer Type (oder eine geeignete Struktur) und verwendet EEPROM.put() und get()

...lasse ich diesen auf eine SD-Karte schreiben und bei Neustart wieder auslesen. Da aber der Wert immer mehr stellen bekommt kann ich ihn mit der mir bekannten Methode nicht auslesen.

Wenn du trotz der vielen Tips, es ganz anders zu machen, bei

sdfile.println(kmstand);

bleiben willst, kannst du diese mit parseInt() wieder auslesen, egal wie viele Zeichen das sind. Liefert übrigens ein long zurück. Das sollte für einen Kilometerstand reichen.

michael_x:
Wenn du trotz der vielen Tips, es ganz anders zu machen, bei

sdfile.println(kmstand);

bleiben willst, kannst du diese mit parseInt() wieder auslesen, egal wie viele Zeichen das sind. Liefert übrigens ein long zurück. Das sollte für einen Kilometerstand reichen.

Danke das werde ich auf jedenfall versuchen :slight_smile: