Der Arduino kann nur ab dem Zeitpunkt des Einschaltens die Zeit messen. Das aktuelle Datum und die Zeit kann nur mit einem RTC-Modul (RealTimeClock) gesetzt und gelesen werden. Beim ersten Start muss das aktuelle Datum und die aktuelle Zeit manuell gesetzt werden, anschließend läuft die Zeit mit Hilfe der Batterie weiter. Außerdem misst das hier verwendete Modul DS3231 zusätzlich die Temperatur.
Echtzeituhren finden im privaten Bereich und in der Industrie Verwendung:
- in Computern: die RTC gibt die aktuelle Zeit an das jeweilige Betriebssystem weiter
- Steuerung der Heizung: Sommer- und Winterbetrieb, Tag- Nachtschaltung Einstellung der Heizphasen im Tagesverlauf
- Echtzeituhren in den verschiedensten Haushaltsgeräten
- die Erfassung und Speicherung der Arbeitszeiten der Mitarbeiter*innen in einem Betrieb
- Bezahlsysteme, bei denen Datum und Uhrzeit mit auf den Beleg gedruckt werden
Der Schaltplan:
Zunächst musst du eine Bibliothek installieren und ⇒einbinden. Bibliotheken stellen Funktionen bereit, mit denen du ein Bauteil verwenden kannst. In diesem Fall ist es die Bibliothek RTClib.
Sketch -> Bibliothek einbinden -> Bibliotheken verwalten
Beispiel: Datum, Zeit und Temperatur im Seriellen Monitor anzeigen
Das dazugehörige Programm:
// benötigte Bibliothek einbinden
#include "RTClib.h"
// Name des RTC-Moduls (rtc)
RTC_DS3231 rtc;
void setup()
{
// RTC-Modul starten
rtc.begin();
Serial.begin(9600);
/*
wenn Datum und Zeit nicht korrekt -> Datum/Zeit setzen
Jahr, Monat, Tag, Stunde, Minute, Sekunde
Beispiel: 2022 August 31. 10 Uhr 30 Minuten 30 Sekunden
rtc.adjust(DateTime(2022, 8, 31, 10, 31, 30));
*/
}
void loop()
{
// rtc.now() -> aktuelle Zeit holen
DateTime aktuell = rtc.now();
/*
Datumsformat festlegen
DD -> Tag mit führender 0
MM -> Monat mit führender 0
YYYY -> vollständige Angabe des Jahres
*/
char Datum[] = "DD.MM.YYYY ";
// Datum in Zeichenkette (String) umwandeln und anzeigen
Serial.print(aktuell.toString(Datum));
// Format der Zeitangabe festlegen
char Zeit[] = "hh:mm:ss";
// Zeitangabe in Zeichenkette (String) umwandeln und anzeigen
Serial.print(aktuell.toString(Zeit));
// Temperatur ermitteln
String Temperatur = String(rtc.getTemperature());
// Wert wird im angelsächsisches Zahlenformat ermittelt
// . durch , ersetzen
Temperatur.replace(".", ",");
Serial.println(" Temperatur: " + Temperatur + "°C");
// 1 Sekunde Pause
delay(1000);
}
Letzte Aktualisierung: