kk logo

Ein real time Clock (RTC) ist ein Modul für den Arduino das die "echte" Zeit vorgibt. Wenn man "millis" und Zähler des Arduino verwenden würde und die Uhr schnell ungenau werden. Ein RTC sorgt dafür das die Uhr auch über einen langen Zeitraum und dank der Batterie auch bei Spanungslosem Arduino genau bleibt.

Ardublock in der DuinoEdu Version hat einen RTC Block mit dabei, der sehr gut und einfach funktioniert. Damit kann nicht nur die genaue Uhrzeit und das Datum im Serial Monitor oder auf einem LCD / Oled, angezeigt, sondern auch Zeitschaltuhren und Wecker gebaut werden.  1 ardublock real time clock tutorial

RTC Beispiel für eine Uhr mit Ardublock auf einem LCD Display

 Als erstes muss im Block RTC: das aktuelle Datum und die aktuelle Uhrzeit eingetragen werden. Am besten 30 Sekunden früher als die aktuelle Uhrzeit, da das hochlanden einige Sekunden in Anspruch nimmt. Nun ist das Datum und die Uhrzeit auf dem RTC gespeichert und sollte nicht mehr hochgeladene werden, da sonst alles überschrieben wird. Einmal hochlanden, dann mit LCD oder Serial Monitor prüfen und dann diese Block am besten löschen. Lädt man diesen Block 10 Minuten später wieder hoch hat man eine Uhr die 10 Minuten nachgeht, wenn man vergisst die Uhrzeit zu ändern. 

Dann am besten gleich noch die 3 Variablen anlegen, die man später braucht. 

Die weiteren Böcke werden in einem "only every" Block abgefragt, damit der Arduino nicht jede Millisekunde "prüft" ob sich die Zeit geändert hat. Es reicht dies nur jede Sekunde zu machen, da sich die Zeit nun mal nur jede Sekunde ändert.  
2 ardublock rtc tutorial

 Als nächstes werden über die RTC Blöcke jeweils das Jahr, der Monat und der Tag auf Display angezeigt. Zur Auswahl jeweils den kleinen Hacken wählen und das Gewünschte Feld auswählen. Leider wird der Wochentag nicht angezeigt. Damit wird das Datum in der obersten Zeile angezeigt. 

Über die drei Variablen Stunde, Minute und Sekunde wird nun die jeweilige Zeit in die Variable geschrieben. Natürlich könnte man den Block "RTC Hour, RTC Minute usw." auch direkt anzeigen, es braucht dafür keine Variable, warum ich das trotzdem mache, wird im nächsten Block deutlich. 
3 arduinoardublock rtc tutorial

 Variablen können keine "0" vor einer Zahl anzeigen. Das heißt, auch wenn in der Variablen 01 oder 005 steht, dann wird immer 1 oder 5 ausgegeben. Das gleich passiert auch mit den RTC Blöcken. Ist es 12:34, dann steht in der Variablen 12 und 34. Ist es aber 01:07, dann gibt der Block 1 und 7 aus. damit würde folgende Uhrzeit auf dem Display angezeigt werden.  

Uhrzeit ist  Uhrzeit angezeigt
 12:34 15 12:34 15
 07:05 03  7 :5  3 
12:04 09 12: 4 9

Den Stellen der Uhrzeit fehlen also nicht nur die "0" sondern die einer und zehner Stellen verschieben sich auch noch. Das ist auf einer Anzeige einfach nicht schön. Deshalb brauchen wir die Variablen vom Anfang, in dieser Variablen steht als Zahl eine "0" und eine "0" wird anzeigt. Über einen falls/sonst Block frage ich nun ab ist die Uhrzeit "einstellig" oder "zweistellig", ist es also eine 01,02,03 oder 12,13,44 Zahl. 

  • Ist die Zahl einstellig, dann setze ich die Uhrzeit eine Stelle zurück und schreibe die 0 vor diese Zahl
  • Ist die Zahl zweistellig, dann setze ich die Uhrzeit eine stelle vor und ignoriere die 0

 4 ardublock rtc tutorial

Das ganze nun für alle drei Blöcke mache und fertig ist die Uhr. Das Projekt bzw. die Ardublock Datei findet sich bei meinen Beispiel. 
5 ardublock rtc tutorial

by grace

By grace alone somehow I standWhere even angels fear to treadInvited by redeeming loveBefore the throne of God aboveHe pulls me close with nail-scarred handsInto His everlasting arms

Ronnie

schwäbischer tüftler und bastler, kraftsportler, 41 Jahre, 1 Frau, 5 Kinder und 1003 Ideen. 

ronnie berzins at mee