Die Lichtzeitpegel-Skulptur am Düsseldorfer Rheinturm ist die größte digitale Zeitskala der Welt und leuchtet bereits seit 1981. Und da mir Thomas zu diesem Thema eine Frage gestellt hat, dachte ich mir, ich probiere auch gleich mal aus, wie man diese Uhr mit Arduino umsetzen könnte: die Arduino Rheinturm-Uhr.
Mehr Infos zum Hintergrund des Lichtzeitpegels finden sich natürlich auf Wikipedia.
Funktionsweise
Die Rheinturm-Uhr ist im Grunde eine Anzeige, die die Uhrzeit in die Einzelstellen zerlegt und dann auf Leuchten anzeigt. Aus 23:19:04 wird also von unten nach oben: 4 Leuchten, 0 Leuchten, Trennleuchte (rote Lampe), 9 Leuchten, 1 Leuchte, Trennleuchte, 3 Leuchten, 2 Leuchten.
In diesem Beispiel baue ich, genau wie Thomas, die Leuchten mit WS2812-LED-Streifen nach. Das verringert den Verkabelungsaufwand extrem und ist dazu noch relativ günstig. Details dazu habe ich hier schon mal zusammengefasst: WS2812 – Der einfachste Weg, viele LEDs mit Arduino zu steuern.
Ich lasse zwischen den Einer- und Zehnerstellen der Sekunden, Minuten und Stunden jeweils zwei LEDs frei und zwischen den Sekunden, Minuten und Stunden selbst drei LEDs, wobei ich die mittlere der drei als Trennzeichen (rot blinkende LED) verwende. Im Original blinkt die übrigens nicht.
Für die Uhrzeit verwende ich ein RTC-Modul DS1307 (RTC = Real Time Clock).
Bauteile
- WS2812 LED-Streifen
Die gibt es mit 30, 60 oder 144 LEDs pro Meter. Für dieses Projekt braucht man 51 LEDs. Je weniger LEDs man also pro Meter hat, desto größer wird die Uhr (ca. 1,7m bei 30 LEDs/m, ca. 0,85m bei 60LEDs/m, ca. 35cm bei 144 LEDs/m – wenn ich mich nicht verrechnet habe) - 1x Elektrolytkondensator 1000uF/16V
- 1x Widerstand 300 – 500 Ohm
- 1x DS1307 RTC-Modul
Schaltung
Die Schaltung besteht aus dem RTC Modul, dass per I2C-Schnittstelle verbunden ist. Dazu werden die SDA- und SCL-Pins mit den SDA und SCL-Pins des Arduino-Boards verbunden. Zusätzlich wird das Modul mit GND und 5V+ verbunden. Der WS2812-Streifen wird ebenfalls mit GND und 5V verbunden. Über beide Potenziale wird ein großer Elektrolytkondensator (1000uF) geschaltet. Der D-In Pin des WS2812-Streifens wird über einen 300 – 500 Ohm großen Widerstand mit dem digitalen Pin 6 des Arduino-Boards verbunden. Die Zuleitungskabel sollten übrigens so kurz wie möglich sein. (Das findet sich in den Best Practices von Adafruit wieder.)
Libraries
Für dieses Projekt wird die Adafruit NeoPixel Bibliothek benötigt. Man kann sie hinzufügen, indem man im Arduino Menü > Sketch > Bilbiothek hinzufügen > Bibliotheken verwalten nach »NeoPixel« sucht und die aktuelle Version installiert.
Darüber hinaus wird die RTC by Makuna Bibliothek verwendet. Auch diese installiert man über Bibliotheken verwalten. Hier kann man einfach nach RTC Makuna suchen.
Code: Arduino Rheinturm
Sind die Bibliotheken installiert, kann man einfach den folgenden Code auf das Arduino-Board laden. Im oberen Teil kann man noch die Blinkgeschwindigkeit der Trennleuchten einstellen: 1 = nicht blinken, 1000 = jede halbe Sekunde ein- bzw. ausschalten.
/* Rheinturmuhr mit NeoPixel WS2812 LED-Streifen */ #include <Adafruit_NeoPixel.h> #include <Wire.h> #include <RtcDS1307.h> RtcDS1307<TwoWire> Rtc(Wire); #define PIN 6 // Pin, an dem der Datenpin der Neopixel angeschlossen ist #define NUMPIXELS 51 // Anzahl der LEDs int blinkgeschwindigkeit = 1000; // hier kann man die roten Trenn-LEDs blinken lassen – wenn man das nicht will, kann man die Variable auf 1 setzen int theLEDsAus[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0}; int theLEDs[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0}; Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); // Anlegen des Neopixel-Objektes /* ***** ***** ***** ***** SETUP ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** */ void setup() { pixels.begin(); // Initialisierung des Neopixel Objektes pixels.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255) rtcInit(); // Real Time Clock Initialisierung } /* ***** ***** ***** ***** LOOP ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** */ void loop() { if (!Rtc.IsDateTimeValid()) { if (Rtc.LastError() != 0) { // we have a communications error // see https://www.arduino.cc/en/Reference/WireEndTransmission for // what the number means Serial.print("RTC communications error = "); Serial.println(Rtc.LastError()); } else { // Common Causes: // 1) the battery on the device is low or even missing and the power line was disconnected Serial.println("RTC lost confidence in the DateTime!"); } } RtcDateTime now = Rtc.GetDateTime(); printDateTime(now); Serial.print(" "); updateTime(now); showTime(); Serial.println(); delay(10); } void updateTime(const RtcDateTime& dt) { /* Reset aller LED Einträge */ for (int i = 0; i < NUMPIXELS; i++) { theLEDs[i] = theLEDsAus[i]; } /* Sekunden Einer */ for (int i = 0; i < dt.Second() % 10; i++) { theLEDs[i] = 1; } /* Sekunden Zehner */ for (int i = 0; i < dt.Second() / 10; i++) { theLEDs[15 - i] = 1; } /* Minuten Einer */ for (int i = 0; i < dt.Minute() % 10; i++) { theLEDs[19 + i] = 1; } /* Minuten Zehner */ for (int i = 0; i < dt.Minute() / 10; i++) { theLEDs[34 - i] = 1; } /* Stunden Einer */ for (int i = 0; i < dt.Hour() % 10; i++) { theLEDs[38 + i] = 1; } /* Stunden Zehner */ for (int i = 0; i < dt.Hour() / 10; i++) { theLEDs[50 - i] = 1; } } void showTime() { pixels.clear(); // Schalte alle LEDs aus for (int i = 0; i < NUMPIXELS; i++) { switch (theLEDs[i]) { case 0: Serial.print("-"); pixels.setPixelColor(i, pixels.Color(0, 0, 0)); break; case 1: Serial.print("*"); pixels.setPixelColor(i, pixels.Color(100, 100, 100)); break; case 2: Serial.print(" "); break; case 3: if (millis() % blinkgeschwindigkeit < blinkgeschwindigkeit/2) { Serial.print("|"); pixels.setPixelColor(i, pixels.Color(0, 0, 0)); } else { Serial.print("–"); pixels.setPixelColor(i, pixels.Color(100, 0, 0)); } break; } } pixels.show(); // Sende die Farbinformationen an den LED-Streifen } /* ***** ***** ***** ***** Methoden für die Real Time Clock ***** ***** ***** ***** ***** ***** */ void rtcInit() { Serial.begin(115200); Serial.print("compiled: "); Serial.print(__DATE__); Serial.println(__TIME__); //--------RTC SETUP ------------ // if you are using ESP-01 then uncomment the line below to reset the pins to // the available pins for SDA, SCL // Wire.begin(0, 2); // due to limited pins, use pin 0 and 2 for SDA, SCL Rtc.Begin(); RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__); printDateTime(compiled); Serial.println(); if (!Rtc.IsDateTimeValid()) { if (Rtc.LastError() != 0) { // we have a communications error // see https://www.arduino.cc/en/Reference/WireEndTransmission for // what the number means Serial.print("RTC communications error = "); Serial.println(Rtc.LastError()); } else { // Common Causes: // 1) first time you ran and the device wasn't running yet // 2) the battery on the device is low or even missing Serial.println("RTC lost confidence in the DateTime!"); // following line sets the RTC to the date & time this sketch was compiled // it will also reset the valid flag internally unless the Rtc device is // having an issue Rtc.SetDateTime(compiled); } } if (!Rtc.GetIsRunning()) { Serial.println("RTC was not actively running, starting now"); Rtc.SetIsRunning(true); } RtcDateTime now = Rtc.GetDateTime(); if (now < compiled) { Serial.println("RTC is older than compile time! (Updating DateTime)"); Rtc.SetDateTime(compiled); } else if (now > compiled) { Serial.println("RTC is newer than compile time. (this is expected)"); } else if (now == compiled) { Serial.println("RTC is the same as compile time! (not expected but all is fine)"); } // never assume the Rtc was last configured by you, so // just clear them to your needed state Rtc.SetSquareWavePin(DS1307SquareWaveOut_Low); } #define countof(a) (sizeof(a) / sizeof(a[0])) void printDateTime(const RtcDateTime& dt) { char datestring[20]; snprintf_P(datestring, countof(datestring), PSTR("%02u/%02u/%04u %02u:%02u:%02u"), dt.Month(), dt.Day(), dt.Year(), dt.Hour(), dt.Minute(), dt.Second() ); Serial.print(datestring); }
Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!
- Die beliebtesten Arduino-Projekte von StartHardware
- Inklusive Schaltplan, Beschreibung und Code
- Arduino-Schnellstart-Kapitel
- Kompakter Programmierkurs
Hallo , bekomme Fehlermeldung ,Compilation error: redefinition of ‚void setup()‘ kenne mich nicht so aus.
bitte um Hilfe
Klingt danach, als ob du die Funktion setup() zweimal im Code hast. Copy und Paste den Code hier noch mal in deinen Sketch (vorher alles löschen). Liebe Grüße Stefan
Hallo Stefan,
vielen Dank für den Sketch, leider funktioniert das bei mir nicht so ganz.
Bei mir sind von unten aus gesehen 5 led´s dauerhaft weiß dann 3 led´s aus dann sind 8 dauerhaft weiß dann 1 aus dann blinkt eine rot dann wieder 1 aus dann 16 dauerhaft weiß 1 aus 1 rot blinkend 1 aus 7dauerhaft weiß 3 aus und noch 3 dauerhaft weiß.
vielleicht hast du eine Idee was ich falsch gemacht habe.
Gruß Christopher
Hi Chistopher, hast du die Schaltung so aufgebaut, wie beschrieben? Also mit Vorwiderstand und Kondensator? Welchen LED-Strip hast du verwendet? Liebe Grüße Stefan
Ich denke die Verschaltung ist richtig ich bekomme über andere sketch‘es die led‘s angesteuert wie gewünscht. Ich bin mir nur mit dem real time clock Modul
Unsicher. Kann man das ohne Batterie betreiben? Gibt es eine Möglichkeit das zu testen? Ich habe das led Band ws2812 von Amazon verwendet.
Ja, ich glaube, dass es eine Batterie braucht. Hier hatte ich mal ein Beispiel, wie man es steuert. Im Seriellen Monitor sollte man dann auch die Zeit sehen: https://starthardware.org/arduino-uhrzeit-mit-der-real-time-clock-rtc/
Hallo Stefan,
vielen Dank für das tolle Programm, es läuft alles ganz wunderbar und macht Lust auf mehr!
Kann man statt des Arduino Uno auch den Nano einsetzen oder müsste dafür etwas am Programm geändert werden? (ein schneller Test brachte als Ergebnis nur das alle LED´s permanent leuchten!)
Vielen Dank aus Düsseldorf
Uli
Hallo Stefan, habe die Rheinturmuhr nachgebaut und es funktioniert fast alles.
Bei den roten Trenn LED blinkt die Mittlere oder ist nach Änderung der Software nach deiner Anleitung in
Zeile 11 dauerhaft an. Aber ich hätte gerne alle 3 Trenn LED dauerhaft an. Ist das möglich ???
Wenn Ja, wo muss im Sketch etwas geändert werden.
Hardware kann ich, Software leider nicht.
Ich vermute die Änderung in Zeile 13 und 14. Auch wenn ich die nicht begriffen habe.
Ich bitte um deine Hilfe.
Vielen Dank im Voraus.
Gruß
Norbert Schrills
Hi Norbert, also da gibt es mehrere Möglichkeiten. Probier mal die Blinkgeschwindigkeit auf 0 oder 1 zu setzen (oben im Code). Ansonsten müsstest du din der Methode showTime() den Teil:
case 3:
if (millis() % blinkgeschwindigkeit < blinkgeschwindigkeit/2) { Serial.print("|"); pixels.setPixelColor(i, pixels.Color(0, 0, 0)); } else { Serial.print("–"); pixels.setPixelColor(i, pixels.Color(100, 0, 0)); } break;
ändern in:
case 3:
Serial.print("–");
pixels.setPixelColor(i, pixels.Color(100, 0, 0));
break;
Das sollte es schon gewesen sein.
Liebe Grüße
Stefan
Erstmal Danke für das Projekt. klingt toll
Blöde Frage von einem Nichtelektroniker
Wozu der Kondensator? Ist der obligatorisch?
Hallo Heiko, der Kondensator ist wie ein Strompuffer, der schnell einspringen kann, wenn die Versorgung einbricht. Das kann z.B. passieren, wenn du viele LEDs schnell sehr hell einschaltest. Dann kommt die eigentliche Versorgung nicht hinterher und hier kommt der Kondensator zuhilfe. Liebe Grüße Stefan
Hallo Freunde der Rheinturmuhr,
meine Uhr hat zur Zeit ein Problem, sie verliert immer den Kontakt zum RTC-Modul. Anschlüsse sowie Batterie hab ich gecheckt, der Serial Monitor zeigt keine Auffälligkeiten.
Der Fehler äußert sich immer dadurch, dass alle LED leuchten und eingefroren scheinen, circa einmal die Woche. Hat jemand dieses Problem auch schon gehabt und vielleicht einen Lösungsvorschlag?
Und hat schon jemand den Uhren-Code umgebaut, so dass man die Uhrzeit aus dem Internet bekommt?
Bilder zu meine Uhr. https://www.dropbox.com/sh/znxgw4f2izlks75/AAD4-mG-u-AO_Dp0Nl0IdOX_a?dl=0
Hi, ich bin immer noch bei dem Versuch das ganze zu lösen mit der Uhrzeit aus dem Inet. Bekomme ich aber nicht hin. Posting von mir weiter unten…
Hallo Michael, hast du das Problem schon lösen können? Liebe Grüße Stefan
Hallo Stefan,
ich bin leider auch noch lange nicht in der Lage das Problem selbst lösen zu können. Aber da bei mir auch vermehrt Probleme mit dem RTC Modul auftreten hätte ich auch Interesse an einer Lösung mit Zeit aus dem Internet.
MFG René DO2Vi
Hi, saubere Arbeit!
Der Nachbau hat direkt geklappt! Danke fürs Teilen..
Wäre es mit wenig aufwand möglich jede zweite LED in einer leicht anderen Farbe leuchten zu lassen?
Dann wäre es einfacher mit dem Zählen.
Ich kann das nicht umsetzen. Bin noch Anfänger.
Hi Michael,
interessante Frage. Man könnte gucken, ob die Position der LED gerade oder ungerade ist und ihr dann jeweils eine andere Farbe zuweisen. Das wäre dann sowas:
case 1:
Serial.print("*");
if (i%2<1) pixels.setPixelColor(i, pixels.Color(100, 100, 100));
else pixels.setPixelColor(i, pixels.Color(0, 100, 100));
break;
Aber getestet hab ich das jetzt nicht :-)
Liebe Grüße
Stefan
WOW, ich bin begeistert! Ich wollte jede einzelne LED einzeln ansprechen!
Bin noch meilenweit von „guter Programmierung“ entfernt.
Klappt!!, danke stefan. Ich habe so eine IKEA LED Panel (Floalt) mit Alexa RGBW LED’s umgebaut und dort kommt nun die Uhrzeit mit rein.
Hi Michael,
cool, dass es klappt. Mach dir mal keine Sorgen. Wer weiß schon, was gute Programmierung ist :-D Hauptsache man hat Spaß dabei.
Liebe Grüße
Stefan
Hi Stefan, ich versuche Deinen Sketch umzubauen auf nen ESP8266 Wifi umzustellen um die Uhrzeit aus dem Inet zu holen. Ich dreh aber durch … Ich blicke nicht was alles für das RTC Clock Modul bei Dir im Sketch ist.
Das mit der Funk Uhrzeit habe ich in einem Sketch allein hinbekommen… Aber in Deinem einbauen schaffe ich nicht.
Über E-Mail Kommunikation würde ich mich freuen
Hier der Sketch für die Uhrzeit aus dem Inet:
……….
#include
#include
#include
#define SERIAL_BAUDRATE 9600
const char *ssid = „HierdieSSID“;
const char *password = „HierdasPasswort“;
//Zeitverschiebung UTC MEZ (Winterzeit) = 3600 Sekunden (1 Stunde)
//Zeitverschiebung UTC MEZ (Sommerzeit) = 7200 Sekunden (2 Stunden)
const long utcOffsetInSeconds = 3600;
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, „pool.ntp.org“, utcOffsetInSeconds);
void setup() {
Serial.begin(SERIAL_BAUDRATE);
Serial.println();
Serial.println();
WiFi.begin(ssid, password);
while (WiFi.status () != WL_CONNECTED) {
delay(1000);
Serial.println(„Ich verbinde mich mit dem Internet…“);
}
Serial.println(„Verbunden“);
timeClient.begin();
}
void loop() {
timeClient.update();
Serial.println(timeClient.getFormattedTime());
delay(1000);
}
………….
es fehlen die Libarys…. ?!
#include
#include
#include
Hoffe jetzt sind diese lesbar!
Hallo zusammen, ich verzweifel hier bald . Ich bekomme die Uhr einfach nicht zum laufen. Bei mir leuchtet nur 1 led blau sonst nichts . Habe den rtc schon geflasht. Alles so angeschlossen wie es vorgegeben war auch die leds so wie in der Beschreibung . Haben schon mit 2 Mann geschaut aber wir wissen nicht wo der Fehler liegt . Beide Bibliotheken wurden auch installiert
Hi Stefan, bin nach wie vor schwer begeistert von LED Streifen und Uhr! Das „dimmen“ habe ich auch nachgepflegt. 1a
Mein RTC verliert aber irgendwie die Uhrzeit, trotz neuer Batterie. Gut, der LED Streifen ist / war auch mal länger aus.
Wer kann denn das Programm hier auf einen NodeMCU esp 8266 oder einen esp32 bringen, der die Zeit über einen NTP Dienst aus dem Internet holt? Das wäre viel performanter… dann hat sich auch ein Sommer / Winterzeit Thema erledigt!
Bin gespannt! Gruss aus Düsseldorf, Christian
Hallo Christian,
mit dem RTC bin ich auch erst nicht klar gekommen. Bei meinen musste auch erst mit dem Arduino die Zeit drauf geflasht werden. Dazu kannst du den link über der Bauteileliste klicken. Da hat Stefan erklärt wie es geht.
Gut finde ich die Idee mit dem ESP32 leider bin ich auch noch sehr weit weg davon sowas hinzubekommen.
Wenn es was neues gibt dazu würde ich mich über eine Info freuen.
do2vi@gmx.de
frohes neues euch
Danke Stefan für die tollen Anregungen.
René (DO2VI)
Der Code funktioniert bei mir irgendwie nicht
Er kompiliert die Zeit zwar im seriellen Monitor aber die LED’s fangen nicht an zu leuchten. Benutze auch die selben Bauteile
Bitte um schnelle Antwort
Danke im vorraus
Hallo Steve, hast du schon eine Lösung gefunden? Ansonsten schick mir gern mal Fotos vom Aufbau – ist bestimmt nur ein Problem in der Schaltung. Liebe Grüße Stefan
Guten Tag,
ich als Düsseldorfer muss den Rheinturm einfach nachbauen. Es läuft auch alles prima nur die LED’s sind in den Abendstunden zu hell. Kann mir in diesem Punkt geholfen werden. Ein weiteres Problem die LED’s hängen sich manchmal auf.
Hi Walter,
ich hab den Code mal um eine Zeile erweitert
pixels.setBrightness(50);
Hier kannst du die Helligkeit von 0 bis 255 einstellen.
Das die LEDs hängen bleiben ist mir noch nicht aufgefallen. Ich beobachte das mal.
Liebe Grüße
Stefan
Hallo Stefan,
vielen Dank für Deine schnelle Antwort. In einem Punkt könntest Du mir noch helfen, die Flugsicherung unter dem Restaurant leuchtet bei mir nicht. Eine weitere Frage: Hat die Antenne auch eine Flugsicherung. Wenn ja, wie bekomm ich diese zum leuchten. Vielen Dank im voraus.
Lieben Gruß
Walter
… auch die Uhrzeit stimmt jetzt. Netzsuche…. wird wohl noch mit der Batterie auf einer China Zeit gestanden haben…
Tja, was macht man nicht alles zum ersten Mal… ;-)
Hi Christian,
das klingt ja nach einem aufregenden Tag bei dir :-) Schön, dass dir das Projekt gefällt und danke noch mal für die Inspiration. Manchmal sind die RTCs einfach ein bisschen anstrengend, aber um so besser, wenn man sie dann zum Laufen bekommen hat. Und danke für das Code-Update. Muss ich einpflegen, wenn ich Zeit finde.
Dann bin ich mal auf die Fotos gespannt ;-)
Liebe Grüße
Stefan
Hallo Stefan,
absolut genial! Toll & Danke. Ich bin born and raised Düsseldorfer. Habe den Rheinturm als Schieberegister Uhr in meiner Lehre bei Henkel gebaut. Das Exemplar habe ich zuhause, leider absolut nicht ganggenau, daher eigentlich immer aus. Wollte das immer mal reparieren, mir fehlten aber die Pläne. Hatte dann vor einem Jahr die Webseite von HJ Benrd gefunden und mit dem Arduino angefangen…. Die Version mit WS2812 und seiner Lösung hat bei mir nicht funktioniert.
Deine Version klappt auf Anhieb! Mega.
Die Uhrzeit stimmt bei meinem Strip aber nicht ganz. 10er, 1er Minuten und die 10er und 1er Sekunden klappen.
Die Stunden zählen auch hoch. Allerdings stimmt die Stunde nicht. Wir haben jetzt 10:05. Die Uhr zeigt aber 26 h an. 16h würde ich noch verstehen, wenn die Uhr 6h vor gehen würde. Aber das die 2. 10er Stunde in Kombination mit 6. 1er Stunden leuchtet, ist falsch. Sind das 2 unterschiedlich Bugs. RTC hat ggf. kein korrektes Signal und für die 10er Stunden sind die Leds vertauscht?
Ich suche mal weiter. Die Trennstellen zwischen s, min, h habe ich schon alle auf Dauerrot gestellt, weil ich mich sonst immer verzählt habe….
Wie dem auch sei! Das Ding ist der Hammer! Vielen, vielen Dank.
Gruß aus Düsseldorf
Beantworte meinen Gedankenfehler zu den 10er Stunden….. die Uhrzeit stimmt aber immer noch nicht. Die Uhr zeigt 17:15, obwohl es 11:15 ist!
Im Original zählt die Rheinturm Uhr von unten nach oben! Das gilt für alles s, 10s, min, 10min, h und 10h.
Habe die i + für alles angepasst! Jetzt passt für mich besser ;-) D
/* Sekunden Einer */
for (int i = 0; i < dt.Second() % 10; i++) {
theLEDs[i] = 1;
}
/* Sekunden Zehner */
for (int i = 0; i < dt.Second() / 10; i++) {
theLEDs[11 + i] = 1;
}
/* Minuten Einer */
for (int i = 0; i < dt.Minute() % 10; i++) {
theLEDs[19 + i] = 1;
}
/* Minuten Zehner */
for (int i = 0; i < dt.Minute() / 10; i++) {
theLEDs[30 + i] = 1;
}
/* Stunden Einer */
for (int i = 0; i < dt.Hour() % 10; i++) {
theLEDs[38 + i] = 1;
}
/* Stunden Zehner */
for (int i = 0; i < dt.Hour() / 10; i++) {
theLEDs[49 + i] = 1;