Pages: [1]   Go Down
Author Topic: 1stellige Zahl 2 stellig ausgeben 16x2 Display  (Read 913 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo

ich hab einen DS1307 und ein LCD Display 16x2 Zeichen an meinen Arduino. Mein Problem ist nur 15:2:3 Uhr sieht doof aus  smiley-mr-green Wie kann ich das anpassen das er daraus 15:02:03Uhr macht?

Hier der wichtige Code Abschnitt:

Code:
...
DateTime now = RTC.now();
stundeakt = now.hour();
minuteakt = now.minute();
sekundakt = now.second();
...
lcd.setCursor(0,0);
lcd.print("  ");
lcd.print(stundeakt);
lcd.print(":");
lcd.print(minuteakt);
lcd.print(":");
lcd.print(sekundakt);
lcd.print(" Uhr  ");
...

ich würde behaupten der ganze Code ist nicht nötig oder?

mfg

Chris
Logged

Germany
Offline Offline
Edison Member
*
Karma: 46
Posts: 2310
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ist doch gar nicht so schwer: Wenn du weißt, dass die Minuten- bzw. Sekundenzahl einstellig (das heißt kleiner als 10) ist, schreibst du eine zusätzliche Null aufs Display.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Newbie
*
Karma: 0
Posts: 16
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

*an die Stirn hau*

Code:

     if (stundeakt < 10)
     {
       lcd.print("0");
     }
     lcd.print(stundeakt);
     lcd.print(":");
     if (minuteakt < 10)
     {
       lcd.print("0");
     }
     lcd.print(minuteakt);
     lcd.print(":");
     if (sekundakt < 10)
     {
       lcd.print("0");
     }


danke smiley
Logged

Cologne
Offline Offline
Sr. Member
****
Karma: 11
Posts: 496
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Chris,
ich habe das so gelöst:
Code:
   char time[8];
    sprintf(time, "%02d:%02d:%02d",p.hour, p.minute, p.second);
    lcd.print(time);
    char date[10];
    sprintf(date, "%02d.%02d.%02d",p.day, p.month, p.year);
    lcd.setCursor(0, 3);
    lcd.print(date);
p.hour, p.minute, usw sind int, die direkt aus der Library üebrgeben werden, müsstest du also mit deinen int sundeakt, minuteakt, usw ersetzen .
Gruß
Reinhard
« Last Edit: April 06, 2013, 08:22:34 am by erni-berni » Logged

Cloppenburg
Online Online
Edison Member
*
Karma: 27
Posts: 1012
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Und ich so:
Code:
{
    lcd.clear();
    char lcdline[17];
    lcd.setCursor(3,0);
    sprintf(lcdline,"%02d:%02d:%02d",hour(),minute(),second());
    lcd.print(lcdline);
    lcd.setCursor(3,1);
    sprintf(lcdline,"%02d.%02d.%04d",day(),month(),year());
    lcd.print(lcdline);
 }
Logged

Nicht Mensch, nicht Tier: Programmierer halt...

Cologne
Offline Offline
Sr. Member
****
Karma: 11
Posts: 496
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
char lcdline[17];
    lcd.setCursor(3,0);
lcd.print(lcdline);
geht aber nur bei LCD mit einer Breite von 20 Zeichen (siehe Thread Titel ;-)    )
Logged

Cloppenburg
Online Online
Edison Member
*
Karma: 27
Posts: 1012
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja? Und warum gehts dann bei meinem 16x2 ?
Logged

Nicht Mensch, nicht Tier: Programmierer halt...

Cologne
Offline Offline
Sr. Member
****
Karma: 11
Posts: 496
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

du fängst bei Spalte 3 mit der Ausgabe an und gibst 18 Zeichen (lcdline[17]) aus, von den aber nur 8 oder 10 Zeichen mit Inhalt sind, deshalb passt alles drauf.
Die "leeren Stellen" laufen rechts raus.
Ein lcdline[15] hätte also gereicht.
Logged

Cloppenburg
Online Online
Edison Member
*
Karma: 27
Posts: 1012
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

geht aber NUR bei LCD mit einer Breite von 20 Zeichen

geht also auch mit 16x2 smiley-wink
Logged

Nicht Mensch, nicht Tier: Programmierer halt...

Cologne
Offline Offline
Sr. Member
****
Karma: 11
Posts: 496
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

OK , ich korrigiere mich:
Für eine speicheroptimierte Programmierung reicht als Definition char lcdline[10];
Logged

Pages: [1]   Go Up
Jump to: