RTC-Modul DS3231


Der Ardui­no kann nur ab dem Zeit­punkt des Ein­schal­tens die Zeit mes­sen. Das aktu­el­le Datum und die Zeit kann nur mit einem RTC-Modul (RealTimeClock) gesetzt und gele­sen wer­den. Beim ers­ten Start muss das aktu­el­le Datum und die aktu­el­le Zeit manu­ell gesetzt wer­den, anschlie­ßend läuft die Zeit mit Hil­fe der Bat­te­rie wei­ter. Außer­dem misst das hier ver­wen­de­te Modul DS3231 zusätz­lich die Tem­pe­ra­tur.

Wenn das Modul nicht mit Strom ver­sorgt ist, kann die Bat­te­rie (C2032) die Uhr­zeit bis zum nächs­ten Ein­schal­ten puf­fern. Aller­dings ver­fügt das DS3231-Modul über eine Lade­funk­ti­on für die Bat­te­rie. Wenn das Modul mit Strom ver­sorgt wird, soll­te die Bat­te­rie ent­fernt oder eine wie­der auf­lad­ba­re Knopf­zel­le ver­wen­det wer­den.

Der Schalt­plan:

Benö­tig­te Biblio­thek:

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

Die Funk­tio­nen der Biblio­thek RTC­Lib:
rtc -> Name des Moduls
aktu­ell -> Name der über rtc.now() ermit­tel­ten Zeit

Funktionen der Bibliothek Adafruit RTClib

Schlüs­sel­wortAnzeige/Parameter
adjust(DateTime(Jahr Monat, Tag, Stun­de, Minu­te, Sekun­de)Bei­spiel:
rtc.adjust(DateTime(2025, 4, 17, 10, 31, 30));
now()aktu­el­le Zeit holen
day­OfT­he­Week()Num­mer des Wochen­ta­ges
0 = Sonn­tag
1 = Mon­tag
. . .
6 = Sams­tag
day()Tag
month()Monat
1 = Janu­ar
2 = Febru­ar
...
12 = Dezem­ber
year() Jahr
hour()Stun­de
minu­te())Minu­te
second())Sekun­de
Uhr­zeit als Array defi­nie­ren:
char Zeit[] = "Uhr­zeit: hh:mm:ss"
print(aktuell.toString(Zeit))
hh = Stun­den
mm = Minu­ten
ss = Sekun­den
Datum als Array defi­nie­ren:
char Datum[] = "DD.MM.YYYY"
print(aktuell.toString(Datum))
DD = Tag
MM = Monat
YYYY = 4-stel­li­ges Jahr
get­Tem­pe­ra­tu­re()Tem­pe­ra­tur ermit­teln
los­t­power()unter­sucht, ob das Modul zwi­schen­zeit­lich nicht mit Strom ver­sorgt wur­de

Die Zeit kann mit unter­schied­li­chen Metho­den gesetzt wer­den, lei­der sind bei­de nicht genau:

  • mit der Anga­be von Datum und Uhr­zeit:
    rtc.adjust(DateTime(2025, 4, 17, 10, 30, 30));
    For­mat: Jahr, Monat, Tag, Stun­de, Minu­te, Sekun­den
    Man muss dann sofort nach der Fest­le­gung das Pro­gramm kom­pi­lie­ren, die Uhr wird ver­mut­lich etwas vor- oder nach­ge­hen, je nach­dem wie gut die Zeit zwi­schen der Ände­rung und dem Abschluss der Kom­pi­lie­rung geschätzt wur­de.
    Vor der nächs­ten Kom­pi­lie­rung muss die Zei­le ent­fernt wer­den.
  • mit der Zeit zu der das Pro­gramm kom­pi­liert wur­de:
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    Solan­ge die Zeit des Com­pu­ters mit einem Zeit­ser­ver syn­chro­ni­siert wur­de, wird die Uhr­zeit ledig­lich ein wenig nach­ge­hen.

Bei­spiel: Datum, Zeit und Tem­pe­ra­tur im Seri­el­len Moni­tor anzei­gen

Das dazu­ge­hö­ri­ge Pro­gramm:

Erwei­ter­te Ver­si­on mit Anzei­ge der Namen der Wochen­ta­ge und der Monats­na­men:

Das dazu­ge­hö­ri­ge Pro­gramm:


Letzte Aktualisierung: Jan. 14, 2026 @ 17:54