letzte Aktualisierung:
Bibliothek TM1637 von AKJ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | // 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: 2024 August 31. 10 Uhr 30 Minuten 30 Sekunden rtc.adjust(DateTime(2024, 8, 31, 10, 31, 30)); Alternative: Synchronisation mit der Zeit zu der das Programm kompiliert wurde: rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); */ // rtc.adjust(DateTime(2024, 8, 31, 10, 31, 30)); // rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | // 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: 2024 August 31. 10 Uhr 30 Minuten 30 Sekunden rtc.adjust(DateTime(2024, 8, 31, 10, 31, 30)); Alternative: Synchronisation mit der Zeit zu der das Programm kompiliert wurde: rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); */ // rtc.adjust(DateTime(2024, 8, 31, 10, 31, 30)); // rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } 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(); } |