RTC-Modul

Lesezeit: 4 Minuten

Der Arduino kann nur ab dem Zeit­punkt des Ein­schal­tens die Zeit messen. Das aktuelle Datum und die Zeit kann nur mit einem RTC-Mod­ul (RealTimeClock) geset­zt und gele­sen wer­den. Beim ersten Start muss das aktuelle Datum und die aktuelle Zeit manuell geset­zt wer­den, anschließend läuft die Zeit mit Hil­fe der Bat­terie weit­er. Außer­dem misst das hier ver­wen­dete Mod­ul DS3231 zusät­zlich die Tem­per­atur.

Wenn das Mod­ul nicht mit Strom ver­sorgt ist, kann die Bat­terie die Uhrzeit bis zum näch­sten Ein­schal­ten puffern. Allerd­ings ver­fügt das DS3231-Mod­ul über eine Lade­funk­tion für die Bat­terie. Wenn das Mod­ul mit Strom ver­sorgt wird, sollte die Bat­terie ent­fer­nt oder eine wieder auflad­bare Knopfzelle ver­wen­det wer­den.

Der Schalt­plan:

Benö­tig­te Bib­lio­thek:

Sketch ⇒ Biblio­thek ein­bin­den ⇒ Biblio­the­ken ver­wal­ten

Die Funk­tio­nen der Bib­lio­thek RTCLib:
rtc -> Name des Moduls
aktuell -> Name der über rtc.now() ermit­tel­ten Zeit

Funktionen der Bibliothek Adafruit RTClib

Schlüs­sel­wortAnzeige/Parameter
adjust(DateTime(Jahr Monat, Tag, Stunde, Minute, Sekunde)Beispiel:
rtc.adjust(DateTime(2025, 4, 17, 10, 31, 30));
now()aktuelle Zeit holen
day­OfThe­Week()Num­mer des Wochen­t­ages
0 = Son­ntag
1 = Mon­tag

6 = Sam­stag
day()Tag
month()Monat
1 = Jan­u­ar
2 = Feb­ru­ar

12 = Dezem­ber
year()Jahr
hour()Stunde
minute())Minute
sec­ond())Sekunde
Uhrzeit als Array definieren:
char Zeit[] = “Uhrzeit: hh:mm:ss”
print(aktuell.toString(Zeit))
hh = Stun­den
mm = Minuten
ss = Sekun­den
Datum als Array definieren:
char Datum[] = “DD.MM.YYYY”
print(aktuell.toString(Datum))
DD = Tag
MM = Monat
YYYY = 4‑stelliges Jahr
get­Tem­per­a­ture()Tem­per­atur ermit­teln
lost­pow­er()unter­sucht, ob das Mod­ul zwis­chen­zeitlich nicht mit Strom ver­sorgt wurde

Die Zeit kann mit unter­schiedlichen Meth­o­d­en geset­zt wer­den, lei­der sind bei­de nicht genau:

  • mit der Angabe von Datum und Uhrzeit:
    rtc.adjust(DateTime(2025, 4, 17, 10, 30, 30));
    For­mat: Jahr, Monat, Tag, Stunde, Minute, Sekun­den
    Man muss dann sofort nach der Fes­tle­gung das Pro­gramm kom­pilieren, die Uhr wird ver­mut­lich etwas vor- oder nachge­hen, je nach­dem wie gut die Zeit zwis­chen der Änderung und dem Abschluss der Kom­pilierung geschätzt wurde.
    Vor der näch­sten Kom­pilierung muss die Zeile ent­fer­nt wer­den.
  • mit der Zeit zu der das Pro­gramm kom­piliert wurde:
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    Solange die Zeit des Com­put­ers mit einem Zeit­serv­er syn­chro­nisiert wurde, wird die Uhrzeit lediglich ein wenig nachge­hen.

Beispiel: Datum, Zeit und Tem­per­atur im Seriellen Mon­i­tor anzeigen

Das dazuge­hörige Pro­gramm:

Erweit­erte Ver­sion mit Anzeige der Namen der Wochen­t­age und der Monat­sna­men:

Das dazuge­hörige Pro­gramm:


Letzte Aktualisierung: Nov. 25, 2025 @ 17:50