Uhr mit großer Anzeige - Teil 1 und Update für die elektronische Sanduhr / Eieruhr

Das 4x64-Matrix-Display hat es unserem Kunden Hans-Ulrich Küster, der uns von seinem Projekt „elektronische Sanduhr/Eieruhr“ berichtet hatte, offensichtlich angetan. Denn es eignet sich auch hervorragend für eine großformatige Anzeige. Er schreibt: Das Alter bringt es mit sich, dass es mit dem Sehen und dem Hören nicht mehr so richtig funktionieren will. So geht es einem Verwandten von mir.
Eine normale Uhr kann er in der Nacht nicht erkennen, die sprechende Uhr geht ohne Hörgerät auch nicht so richtig. Also durfte ich mir was einfallen lassen.
Um eine möglichst große Anzeige zu erhalten, habe ich zwei MAX7219 8x32 4 in 1 Dot Matrix LED übereinandergesetzt. Als Uhr diente eine Real Time Clock RTC DS3231 I2C.

Auch dieses Projekt habe ich nachgebaut und möchte es mit Ihnen teilen. In einer Fortsetzung werde ich berichten, wie ich den Micro Controller mit ATMEGA 328P durch die WLAN-fähigen Micro Controller von Espressif ersetzt habe. Denn am Ende dieses Blogs möchte ich über die Weiterentwicklung der Sanduhr von Herrn Küster schreiben.

Verwendete Hardware

Anzahl Bauteil
1 Micro Controller mit ATMEGA 328P
2 MAX7219 8x32 4 in 1 Dot Matrix LED Anzeigemodul
1 Real Time Clock RTC DS3231 I2C
Steckbrett (Breadboard) und Kabel (Jumper Wire)

 

Aufbau 1

In meinem provisorischen Nachbau habe ich nach dem Anlöten der zweiten, gewinkelten Pin-Leiste die beiden Matrix-Displays kurzerhand mit einem langen Stück Tesafilm verbunden, die „Daisy Chain“ mit dem beiliegenden Kabel verbunden und die Verbindung zur Spannungsversorgung und der SPI-Schnittstelle des Micro Controllers hergestellt.

Daisy Chain

Die Schaltung weist keine Besonderheiten auf: Die SPI-Schnittstelle beim Micro Controller ist die Zweitbelegung der digitalen Pins D13=SCK (=Serial Clock), D12=MISO (=Master in-Slave out, bei Displays nicht benötigt), D11=MOSI (=Master out – Slave in) und D10=SS (=Slave Select). Die Bezeichnungen am Matrix-Display weichen etwas ab: DIN (= Data in) wird mit MOSI verbunden, CS (=Chip Select) ist ein Synonym für SS (=Slave Select) und SCL ist die Taktleitung und wird mit SCK verbunden. Dann fehlt nur noch die Spannungsversorgung: GND an GND und VCC an 5V.

Die verwendete Real Time Clock (RTC DS3231) hat eine I2C-Schnittstelle, also SDA an den analogen Pin A4 und SCL an A5, Spannungsversorgung an GND und VCC an 3,3V oder 5V.

Schaltplan

Zu Beginn des Sketches werden drei Programm-Bibliotheken geladen, um die verwendete Hardware leicht einzubinden:

 #include <MD_MAX72xx.h >  // Anzeige
 #include <Wire.h>                // I2C Schnittstelle
 #include "RTClib.h"               // Real Time Clock ZS-042

Sofern noch nicht geschehen, diese in der bekannten Weise unter Menüpunkt /Werkzeuge/Bibliotheken_verwalten suchen und hinzufügen.

Das Einbinden der Anzeige erfolgt anschließend mit

 #define HARDWARE_TYPE MD_MAX72XX::FC16_HW
 #define MAX_DEVICES 8 // Anzahl Segmente
 
 #define CLK_PIN 13
 #define DATA_PIN 11
 #define CS_PIN 10
 
 MD_MAX72XX uhr = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);

 

Da die Bibliothek MD_MAX72xx.h für verschiedene Displays verwendet werden kann, wird das hier genutzte, von AZ-Delivery vertriebene Matrix-Display als FC16_HW definiert. Da insgesamt 8 Matrix-Displays hintereinandergeschaltet (kaskadiert) werden, wird MAX_DEVICES 8 festgelegt. Die SPI-Schnittstelle wird innerhalb der Bibliothek MD_MAX72xx.h eingebunden.

Wer ein anderes Display benutzen möchte, kann mit dem Beispielsketch MD_MAX72xx_HW_MAPPER seine Einstellungen ermitteln.

MD_MAX72xx_HW_MAPPER

Die beiden anderen Bibliotheken sind für die Aktivierung der I2C-Schnittstelle und die Real Time Clock nötig.

Für die großen Zahlen findet man keine Vorlage im Internet. Die hat Herr Küster dann in selbst definierten Funktionen beschrieben.

Für die Synchronisation der Real Time Clock wird die Systemzeit des Rechners beim Hochladen des Sketches verwendet. Dazu wird die Variable in Zeile 22
bool syncOnFirstStart = false; // true mit PC synchronisieren, ansonsten false

beim ersten Hochladen auf true gesetzt, danach beim erneuten Hochladen auf false.

Hier der gesamte Sketch zum Download

Update Sanduhr / Eieruhr

Nun wie angekündigt noch ein kurzes Update zur elektronischen Sanduhr/Eieruhr.

Um noch flexibler die Zeit für den Countdown eingeben zu können, wurde der Schalter 2 durch ein Potentiometer ersetzt.

Der Wert für das Poti ist unkritisch, da geht alles zwischen 1 kOhm und 10 kOhm. Jetzt zum Zeitablauf. Im Deklarationsteil sind pause_1 und pause_x für die Zeiten verantwortlich. Steht das Poti auf Minimalwert, bestimmt pause_1 die Zeit, im Sketch mit dem Wert für 5 Minuten. Steht das Poti auf Maximalwert, bestimmt pause_x die Zeit.

Durch Veränderung des Wertes pause_x kann man die Zeitspanne, die sich einstellen lässt, verändern. Folgende Werte wurden gemessen:

35 -> 6:05 Minuten

30 -> 6:15 Minuten

25 -> 6:30 Minuten

20 -> 6:50 Minuten

15 -> 7:30 Minuten

10 -> 8:45 Minuten

9 -> 9:10 Minuten

8 -> 9:40 Minuten

7 -> 10:20 Minuten

6 -> 11: 15 Minuten

5 -> 12:30 Minuten

 

Verändert man allerdings den Wert für pause_1 dann verändern sich auch alle anderen Einstellungen und man muss die Zeiten neu ausprobieren.

Es ist sicherlich sinnvoll, egal welche Werte man wählt, für das eigene Poti eine Skala zu erstellen.

Schaltung 2

Hier der Sketch Sanduhr_poti zum Download

 

Viel Spaß mit den Vorschlägen von Herrn Küster. Beim nächsten Mal nehmen wir für die Uhrzeitanzeige einen WLAN-fähigen Micro Controller von Espressif.

DisplaysFür arduinoProjekte für anfänger

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Aanbevolen blog berichten

  1. Installeer ESP32 nu van de raad van bestuur
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - ESP Programmeren via Wi-Fi