letzte Aktualisierung:
Bibliothek TM1637 von AKJ
// benötigte Bibliotheken einbinden
#include "RTClib.h"
// Bibliothek TM1637 von AKJ
#include "TM1637.h"
// Name und Pins für das Anzeigemodul
TM1637 Anzeige(2, 3);
// Name des RTC-Moduls (rtc)
RTC_DS3231 rtc;
void setup()
{
Serial.begin(9600);
// RTC-Modul starten
rtc.begin();
/*
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));
*/
// 7-Segment-Modul starten
Anzeige.begin();
// Helligkeit setzen
Anzeige.setBrightness(10);
}
void loop()
{
// speichern der Uhrzeit als String
String Uhrzeit;
/*
rtc.now() -> aktuelle Zeit holen
aktuell.hour() -> Stunde
aktuell.minute() -> Minute
*/
DateTime aktuell = rtc.now();
// Format der Zeitangabe TM1637 festlegen
char Zeit[] = "hhmm";
// : einschalten
Anzeige.colonOn();
// char-Array in String umwandeln
Uhrzeit = aktuell.toString(Zeit);
// Uhrzeit anzeigen
Anzeige.display(Uhrzeit);
// : ausschalten
Anzeige.colonOff();
// Temperatur ermitteln und in String umwandeln
String Temperatur = String(rtc.getTemperature());
// Temperatur soll als Ganzzahl angezeigt werden
// indexOf -> nach . suchen
byte Suche = Temperatur.indexOf(".");
// substring -> String an der Stelle des Punkts kürzen
Temperatur = Temperatur.substring(0, Suche);
// . durch , ersetzen
Temperatur.replace(".", ",");
// je nach Wert der Temperatur Leerzeichen an den Anfang setzen
if (rtc.getTemperature() >= 10) Temperatur = " " + Temperatur;
if (rtc.getTemperature() < 10 && rtc.getTemperature() > 0) Temperatur = " " + Temperatur;
if (rtc.getTemperature() < 0 && rtc.getTemperature() > -10 ) Temperatur = " " + Temperatur;
if (rtc.getTemperature() < -10 ) Temperatur = " " + Temperatur;
// 2 Sekunde Pause
delay(2000);
// Anzeige löschen
Anzeige.clearScreen();
// Temperatur anzeigen
Anzeige.display(Temperatur);
delay(2000);
Anzeige.clearScreen();
}
Bibliothek TM1637_RT
// Bibliothek TM1637_RT
#include "TM1637Display.h"
#include "RTClib.h"
// Name des RTC-Moduls (rtc)
RTC_DS3231 rtc;
// Pins definieren
#define CLK 2
#define DIO 3
// Name des Displays und zugeordnete Pins
TM1637Display Anzeige(CLK, DIO);
// Array für das Grad-Zeichen
const byte GRAD[] =
{
SEG_A | SEG_F | SEG_G | SEG_B
};
void setup()
{
Anzeige.setBrightness(5);
Anzeige.clear();
// RTC-Modul starten
rtc.begin();
/*
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()
{
DateTime aktuell = rtc.now();
/*
Zeit formatieren
wenn Stunde oder Minute < 10 -> führende 0 setzen
*/
// Minuten
if (aktuell.minute() < 10) Anzeige.showNumberDecEx(aktuell.minute(), 64, true, 4, 0);
else Anzeige.showNumberDecEx(aktuell.minute(), 64, false, 4, 0);
// Stunden
if (aktuell.hour() < 10) Anzeige.showNumberDecEx(aktuell.hour(), 64, true, 2, 0);
else Anzeige.showNumberDecEx(aktuell.hour(), 64, false, 2, 0);
delay(2000);
// Anzeige löschen
Anzeige.clear();
// Temperatur ermitteln und nach int umwandeln
int Temperatur = int(rtc.getTemperature());
/*
Temperatur anzeigen: false -> keine führende 0, 3 -> 3.
Position, 0 -> rechtsbündig anordnen
*/
Anzeige.showNumberDec(rtc.getTemperature(), false, 3, 0);
// Grad-Zeichen anzeigen
Anzeige.setSegments(GRAD, 2, 3);
delay(2000);
Anzeige.clear();
}