marau
1
Hallo zusammen,
ich würde gerne die Uhrzeit mit führenden Nullen formatiert auf mein LCD ausgeben, also z.B. 12:09:04.
Mit meinen derzeit noch bescheidenen Kenntnissen in C bekomme ich das nicht hin.
Kann mir jemand von Euch einen Tipp geben?
Wahrscheinlich ist das gar nicht kompliziert, aber manchmal sieht man den Wald vor lauter Bäumen nicht...
Danke u. Grüße
Martin
markbee
2
Du könntest z.B. abfragen, ob die Stunde, Minute oder Sekunde < 10 ist und dann entsprechend eine führende 0 davor setzen.
marau
3
Hallo,
vielen Dank!
Manchmal kommt man selbst nicht auf die einfachsten Lösungen!
Gruß
Martin
jurs
4
marau:
ich würde gerne die Uhrzeit mit führenden Nullen formatiert auf mein LCD ausgeben, also z.B. 12:09:04.
Schau Dir mal die Formatierung mit sprintf() an!
Codebeispiel:
char buf[64];
int Stunden,Minuten,Sekunden;
sprintf(buf,"Laufzeit: %02d:%02d:%02d",Stunden,Minuten,Sekunden);
Serial.println(buf)
Ein Byte mit Werten 00 .. 99 in zwei char ablegen:
void setByte(char * target, byte val)
{
*target++ = val/10 + '0'; // Zehnerstelle
*target = val%10 + '0'; // modulo oder Rest
}
/// Verwendung:
char time[] = "12:34:56";
byte minute=54;
byte sekunde = 32;
setByte(time+3,minute); // time hat jetzt den Wert "12:54:56"
setByte(time+6,sekunde); // time hat jetzt den Wert "12:54:32"
wenn man sonst kein sprintf in seinem Sketch hat, wird der code deutlich kleiner.
Wie üblich ist die Fehlerbehandlung: garbage in -> garbage out
marau
6
Hallo zusammen,
vielen Dank an alle Helfer.
Ich habe mich für die Lösung mit sprinf entschieden.
Grüße
Martin