Pages: [1]   Go Down
Author Topic: Formatierte Ausgabe auf LCD  (Read 631 times)
0 Members and 1 Guest are viewing this topic.
Germany
Offline Offline
Full Member
***
Karma: 3
Posts: 126
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Hamburg, Germany
Offline Offline
Sr. Member
****
Karma: 6
Posts: 291
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Du könntest z.B. abfragen, ob die Stunde, Minute oder Sekunde < 10 ist und dann entsprechend eine führende 0 davor setzen.
Logged


Germany
Offline Offline
Full Member
***
Karma: 3
Posts: 126
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

vielen Dank!

Manchmal kommt man selbst nicht auf die einfachsten Lösungen!


Gruß

Martin
Logged

Germany S-H
Offline Offline
Faraday Member
**
Karma: 139
Posts: 2895
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
Code:
 char buf[64];
  int Stunden,Minuten,Sekunden;
  sprintf(buf,"Laufzeit: %02d:%02d:%02d",Stunden,Minuten,Sekunden);
  Serial.println(buf)
Logged

Germany
Offline Offline
Faraday Member
**
Karma: 56
Posts: 2983
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ein Byte mit Werten 00 .. 99 in zwei char ablegen:

Code:
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
Logged

Germany
Offline Offline
Full Member
***
Karma: 3
Posts: 126
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen,

vielen Dank an alle Helfer.

Ich habe mich für die Lösung mit sprinf entschieden.


Grüße

Martin
Logged

Pages: [1]   Go Up
Jump to: