Programmieren der Real Time Clock
Bevor ihr mit dem richtigen Coding anfangt, würde ich
euch empfehlen, die Beispielcodes anzuschauen und einige davon zu testen, um euch
mit dem RTC Bauteil und seinen Funktionen vertraut zu machen. Zuerst müsst ihr aber folgende zwei Libraries hinzufügen:
//Bibliotheken für die rtc
#include "Wire.h" //für die Kommunikation mit dem rtc modul
#include "RTClib.h"
Danach erstellt ihr erstmal ein Char, in dem ihr die Wochentage speichert.
Wie ihr wahrscheinlich in dem Beispielen bereits gesehen habt, muss immer ein Objekt für das RTC_DS3231 erstellt werden.
In unserem Fall haben wir es einfach rtc (für Real Time Clock) genannt.
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
RTC_DS3231 rtc;
clock_t clock();
Beim Void Setup müsst ihr die Clock dann starten.
In den vier Zeilen danach wird noch sichergestellt, dass der Nutzer eine Fehlermeldung
bekommt, falls die RTC nicht gestartet wurde.
Danach wird mit der .adjust Funktion die Uhrzeit
automatisch eingestellt.
rtc.begin();
//------------------------ starten der Uhr und Zeiteinstellung ----------------------------
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
rtc.adjust(DateTime(__DATE__, __TIME__));
Im Void loop werden die Uhrzeit und das Datum in Variablen
gespeichert. Die Uhrzeit besteht aus Stunden, Minuten und Sekunden. Diese drei
Werte werden alle einzeln mit verschiedenen Funktionen ausgelesen. In diesen
Zeilen werden alle drei in einem Char namens „Uhrzeit“ zusammengefügt und dann
im Serial Monitor ausgegeben.
Das Gleiche machen dann nochmal für das Datum, welches auch aus drei einzelnen
Werten (Tag, Monat und Jahr) besteht.
//---------------------------- Dtaum und Uhrzeit speichern --------------------------------------------------
DateTime now = rtc.now();
char uhrzeit[12]= "";
uhrzeit[12] = now.second(), now.minute(), now.hour();
Serial.println(uhrzeit);
char datum[12]= "";
datum[12] = now.day(), now.month(), now.year();
Serial.println(datum);