RTC-Modul DS3231


Überblick

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. Das hier ver­wen­de­te Modul DS3231 misst zusätz­lich die Tem­pe­ra­tur.
Ange­schlos­sen wird das Modul über ⇒I²C. Wird der SQW-Pin mit einem Inter­rupt-Pin ver­bun­den kön­nen Alarm­funk­tio­nen genutzt wer­den.

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 Schaltplan

Benö­tig­te Bibliothek

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

Funktionen der Bibliothek Adafruit RTClib DS3231

Schlüs­sel­wortAnzeige/Parameter
begin()Modul initia­li­sie­ren
now()aktu­el­le Zeit holen
adjust(DateTime(Jahr Monat, Tag, Stun­de, Minu­te, Sekun­de)Bei­spiel:
rtc.adjust(DateTime(2025, 4, 17, 10, 31, 30));
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
disableAlarm(1)
disableAlarm(2)
Alarm 1/2 deak­ti­vie­ren
disable32K();32K-Pin am DS3231 deak­ti­vie­ren
setAlarm1()
setAlarm2()
Alarm (1/2) set­zen
alarmFired(1)
alarmFired(2)
Sta­tus des Alarms (1/2) ermit­teln
writeSqwPinMode(DS3231_OFF)SQW Pin-Mode set­zen

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.

Zeit anzeigen

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:

Alarmfunktion nutzen

Der DS3231 ver­fügt über eine Alarm­funk­ti­on und es kön­nen zwei Alar­me kon­fi­gu­riert wer­den:

A1 Alarmfunktion

Para­me­terAlarm wenn ...
DS3231_A1_PerSecondjede Sekun­de
DS3231_A1_Seconddie Sekun­den pas­sen
DS3231_A1_MinuteMinu­ten und Sekun­den pas­sen
DS3231_A1_HourStun­den, Minu­ten und Sekun­den pas­sen
DS3231_A1_DateTag, Stun­den, Minu­te­en und Sekun­den pas­sen
DS3231_A1_DayWochen­tag, Stun­den, Minu­te­en und Sekun­den pas­sen

Alarm zur vollen Minute

Alarm stündlich alle 15 Minuten

Alarm an einem Tag des Monats

Der Alarm wird am aktu­el­len Tag aus­ge­löst. Wenn du einen ande­ren Tag fest­le­gen willst, musst du aktuell.month() und aktuell.day() durch Zah­len erset­zen.

Alarm täglich wiederholen

A2 Alarmfunktion

Para­me­terAlarm wenn ...
DS3231_A2_PerMinutejwenn Sekun­den = 0 jede Minu­te
DS3231_A2_Minutedie Minu­ten pas­sen
DS3231_A2_HourStun­den und Minu­ten pas­sen
DS3231_A2_DateTag, Stun­den, Minu­te­en und Sekun­den pas­sen
DS3231_A2_DayWochen­tag, Stun­den, Minu­te­en und Sekun­den pas­sen

A1 und A2 gleichzeitig nutzen

Mit Time­Span kann ein Alarm in der Zukunft defi­niert wer­den

Quelle


Letzte Aktualisierung: Apr. 9, 2026 @ 18:39

Inhalt