Bei­spiel­pro­gramm RTC-Modul

Lese­zeit: 3 Minu­ten

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 Temperatur.

Echt­zeit­uh­ren fin­den im pri­va­ten Bereich und in der Indus­trie Verwendung: 

  • in Com­pu­tern: die RTC gibt die aktu­el­le Zeit an das jewei­li­ge Betriebs­sys­tem weiter
  • Steue­rung der Hei­zung: Som­mer- und Win­ter­be­trieb, Tag- Nacht­schal­tung Ein­stel­lung der Heiz­pha­sen im Tagesverlauf
  • Echt­zeit­uh­ren in den ver­schie­dens­ten Haushaltsgeräten
  • die Erfas­sung und Spei­che­rung der Arbeits­zei­ten der Mitarbeiter*innen in einem Betrieb
  • Bezahl­sys­te­me, bei denen Datum und Uhr­zeit mit auf den Beleg gedruckt werden

Der Schalt­plan:

Zunächst musst du eine Biblio­thek instal­lie­ren und ⇒ein­bin­den. Biblio­the­ken stel­len Funk­tio­nen bereit, mit denen du ein Bau­teil ver­wen­den kannst. In die­sem Fall ist es die Biblio­thek RTClib.

Sketch -> Biblio­thek ein­bin­den -> Biblio­the­ken verwalten

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

Das dazu­ge­hö­ri­ge 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: Apr 7, 2024 @ 9:09