Uhr­zeit und Tem­pe­ra­tur auf einem 4-stelligen 7-Segment-Modul anzeigen

Lese­zeit: 4 Minu­ten

Lösung
Seite als PDF
Navi­ga­ti­on

Mit einem RTC- Modul (RealTimeClock) soll die Uhr­zeit auf einem 4-stelligen 7-Segment-Modul ange­zeigt wer­den. Nach einer kur­zen Pau­se wird die Tem­pe­ra­tur ange­zeigt und anschlie­ßend wie­der die Uhr­zeit dargestellt.

RTC-Modul

So sieht es aus:

Benö­tig­te Bauteile:

  • RTC-Modul DS3231
  • 4-stellige 7-Segment-Anzeige TM1637
  • Lei­tungs­dräh­te

Baue die Schal­tung auf:
(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen)

Benö­tig­te Bibliotheken:

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

Bin­de die benö­tig­ten Biblio­the­ken ein und defi­nie­re die Variablen:

// 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;

Der setup-Teil. Beach­te die Kommentare.

void setup() 
{
  // 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(6);

  // Bildschirm löschen
  Anzeige.clearScreen();
}

Der loop-Teil. Beach­te die Kommentare.

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();
}

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 1. Dez 2022 @ 10:20