| Arduino, Real Time Clock DS3231 und LCD-Display
Nach dem Einschalten werden auf dem Display laufend Datum und Uhrzeit angezeigt. Diese Daten werden mithilfe
der Funktionen, die die Bibliothek <DS3231.h> zur Verfügung stellt, aus dem DS3231 ausgelesen und formatiert.
Der SchaltplanSchaltplan (Arduino ohne USB-Anschluss oder Netzteil: Vin > 6 V) Das ProgrammMit dem Schalter S4 wird auf Eingabe umgeschaltet. Das Programm springt hier in das Unterprogramm "Stunde_Setzen" und bleibt hier gefangen, bis eine neue Eingabe bestätigt wurde. Mit den Tastern S1(+) und S2(-) kann man den gewünschten Wert einstellen. Mit der Taste S3 wird der neue Wert übernommen (Hier nur in Stunden, um den Programmcode kurz zu halten). // *************************************************************// RTC3231 (Modul ZS-042) mit Arduino Mega 2560 // Externe Zeiteingabe (Stunde), interner Taktgeber // Format Datum und Uhrzeit, LCD-Display 2x16 1602A // ************************************************************* #include <DS3231.h> #include <LiquidCrystal.h> DS3231 clock; RTCDateTime dt; int LED_1 = 3; int Schalter = 46; int Taster_Plus = 40; int Taster_Minus = 42; int Taster_Setzen = 44; String RTC_Data; LiquidCrystal lcd(7, 8, 9, 10, 11, 12); int lcdsize[] = {16, 2}; void setup() { lcd.begin(lcdsize[0], lcdsize[1]); clock.begin(); //clock.setDateTime(2020, 03, 9, 21, 45, 0); pinMode (LED_1, OUTPUT); pinMode (Schalter, INPUT_PULLUP); pinMode (Taster_Plus, INPUT_PULLUP); pinMode (Taster_Minus, INPUT_PULLUP); pinMode ( Taster_Setzen, INPUT_PULLUP); // Diode 2 clock.enable32kHz(false); clock.setOutput(DS3231_1HZ); clock.enableOutput(true); } void lcd_ausgabe (String Zeile_1, String Zeile_2) { lcd.setCursor(3, 0); lcd.print(Zeile_1); lcd.setCursor(4, 1); lcd.print(Zeile_2); digitalWrite (LED_1, HIGH); delay(500); digitalWrite (LED_1, LOW); delay(500); } void Stunde_Setzen (int Stunde) { int Stunde_Neu = Stunde; Einstellen: RTC_Data = Stunde_Neu; lcd_ausgabe ("Stunde: ", RTC_Data + " "); if (digitalRead(Taster_Plus) == LOW) { Stunde_Neu++; delay (20); goto Einstellen; } if (digitalRead(Taster_Minus) == LOW) { Stunde_Neu--; delay (20); goto Einstellen; } if (digitalRead(Taster_Setzen) == LOW) { goto Erledigt; } goto Einstellen; Erledigt: clock.setDateTime(2020, 03, 13, Stunde_Neu, 45, 0); } void loop() { if (digitalRead(Schalter) == LOW) { Stunde_Setzen (dt.hour); } dt = clock.getDateTime(); RTC_Data = clock.dateFormat("d-m-Y H:i:s", dt); lcd_ausgabe (RTC_Data.substring(0,11), RTC_Data.substring(11,19)); RTC_Data = dt.year; lcd_ausgabe ("Jahr: ", RTC_Data + " "); RTC_Data = dt.month; lcd_ausgabe ("Monat: ", RTC_Data + " "); RTC_Data = dt.day; lcd_ausgabe ("Tag: ", RTC_Data + " "); RTC_Data = dt.hour; lcd_ausgabe ("Stunde: ", RTC_Data + " "); RTC_Data = dt.minute; lcd_ausgabe ("Minute: ", RTC_Data + " "); RTC_Data = dt.second; lcd_ausgabe ("Sekunde: ", RTC_Data + " "); lcd_ausgabe ("Heute ist:", clock.dateFormat("l", dt)); } // *************************************************************
Kurzvideo
|