Wechselschalter


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Aktuelle Uhrzeit mit DS3231, TM1637 und Arduino


Für die Anzeige der aktuellen Uhrzeit eignet sich sehr gut ein 7-Segment-Display, das aus vier Digits besteht und in der Mitte, nach zwei Stellen, einen Doppelpunkt hat. Mit ihm kann man problemlos eine Uhrzeit im Format HH:MM anzeigen. Solche Displays (hier 3642BH) sind zusammen mit dem passenden Treiber TM1637 überall zu günstigen Preisen erhältlich.
Als Zeitgeber kommt hier der IC DS3231 zum Einsatz. Auch dieser Chip, eingebettet auf einer kleinen elektronischen Platine in passender elektronischer Umgebung (hier ZS-042), ist leicht zu bekommen.
Die Korrespondenz zwischen den beiden Komponenten wird von Arduino synchronisiert.
Eine Testschaltung ist ganz schnell aufgebaut:

Testschaltung auf Steckbrett


Aus dem Schaltplan ist zu entnehmen, dass für notwendige Verbindungen lediglich vier Drähte notwendig sind. Alles andere bezieht sich auf die Stromversorgung.

Der Schaltplan

Schaltplan

Schaltplan (Arduino ohne USB-Anschluss oder Netzteil: Vin > 6 V)

Das Programm

Bei der ersten Übertragung des Programms muss die aktuelle Zeit (Datum und Uhrzeit) gesetzt werden. Dies geschieht mit der Sequenz
clock.setDateTime(2020, 03, 14, 7, 01, 0);
Anschließend, damit die Zeit nicht immer wieder zurückgesetzt wird, muss diese Zeile gelöscht oder als Kommentar markiert und das Programm erneut geladen werden:
// clock.setDateTime(2020, 03, 14, 7, 01, 0);
Mit
display.setBrightness(10);
wird die Helligkeit der Anzeige festgelegt. Das Hauptprogramm beinhatet kaum Geheimnisse. Mit
dt = clock.getDateTime();
wird laufend aus dem Chip DS3231 die aktuelle Zeit ausgelesen. Nach der Umwandlung von String in Integer werden die Werte mit
display.showNumberDecEx(Ausgabe.toInt(), 0b11100000, false, 4, 4);
zum Display geschickt.
Mit der Byte-Eingabe "0b11100000" wird der Doppelpunkt aktiviert.

// *************************************************************
// Anzeige der aktuellen Uhrzeit
// RTC DS3231 + 7Segmentanzeige 4 Digit mit TM1637
// Arduino Mega 2560
// *************************************************************

#include <TM1637Display.h>
#include <DS3231.h>
#define CLK 10
#define DIO 11

DS3231 clock;
RTCDateTime dt;
TM1637Display display(CLK, DIO);
String Ausgabe;

void setup() {
  clock.begin();
  display.setBrightness(10);
  display.clear();
  //clock.setDateTime(2020, 03, 14, 7, 01, 0);
}

void loop() {
  dt = clock.getDateTime();
  Ausgabe = String(dt.hour);
  if (dt.minute < 10) { Ausgabe = Ausgabe + "0"; } 
  Ausgabe = Ausgabe + String(dt.minute);
  display.showNumberDecEx(Ausgabe.toInt(), 0b11100000, false, 4, 4);
  delay (500);
  display.showNumberDecEx(Ausgabe.toInt(), 0b00000000, false, 4, 4);
  delay (500);
}       
// *************************************************************



Kurzvideo

Kurzvideo


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz