Zeitanzeige



Ziel

Wir programmieren eine einfache Zeitanzeige, die Stunde, Minute und Sekunde anzeigt.
Sie startet bei 00:00:00 und zeigt somit die Zeit an, die seit dem letzten Reset oder dem letzten Einschalten von Arduino vergangen ist.


Bild: Uhr



Wie genau ist diese Zeitanzeige?

Arduino enthält einen Quartz.
Der ist zwar kein Uhrenquartz aber immer noch genau genug, um fast die Genauigkeit einer Quartzuhr zu erreichen.



Zu bewältigende Probleme

  • So eine digitale Uhrzeitanzeige hat das Problem, dass die Sekunden und die Minuten bis 59 hochzählen und die Stunden bis 23.
    Dieses Problem lösen wir mit dem Modulo-Operator.

  • Hinzu kommt, dass wir gerne führende Nullen sehen wollen: wenn es 10:04:55 Uhr ist, soll da nicht stehen: 10:4:55 Uhr.

Hier das Programm:

/*
  Stoppuhr für SainSmart LCD Keypad Shield V1.0
  www.arduinospielwiese.de
*/


#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);

int stunde, minute, sekunde;



void setup() {
  lcd.begin(16, 2); 
  lcd.clear();     
}


void loop(){

  sekunde = (millis()/1000) % 60; // Das Zeichen: "%" ist der Modulo-Operator
  minute  = (millis()/60000) % 60;
  stunde  = (millis()/3600000) % 24;

  lcd.setCursor(4,0);

  if (stunde<10) lcd.print("0"); // fuehrende Null
  lcd.print(stunde);

  lcd.print(":");

  if (minute<10) lcd.print("0");
  lcd.print(minute);

  lcd.print(":");

  if (sekunde<10) lcd.print("0");
  lcd.print(sekunde);
}

Mögliche Erweiterungen

Statt die Startzeit bei 00:00:00 beginnen zu lassen, könnte man die aktuelle Uhrzeit in das Programm einbringen (siehe auch nächstes Projekt: "Digitaluhr").