In this post, I will build a super cool word clock with Arduino and Neopixel LEDs. Such word clocks cost several hundred euros in the trade, but with a little skill, they are also fast self-built. I show you how it works. The electronic base is similar to that of my LED-Matrix.

UPDATE 2022: I built version 2.0 of the Word clock. This time with WiFi and some games to play on it (Pong, Tetris, Snake). Find my blog post about it here.

Material for the word clock

You need the following material for the word clock. Overall they cost less than 100 EURO.

  • deep wooden picture frame 24x30cm (or similar size, amazon.de*)
  • black adhesive foil (amazon.de*)
  • NeoPixel LED Strip with 114x WS2812b LEDs (60LEDs/m) (amazon.de*)
  • Arduino Nano V3.0 (amazon.de*)
  • Real-Time-Clock Modul DS3231 (amazon.de*)
  • power supply 5V/3A (amazon.de*)
  • DC power jack 5.5×2.1 (amazon.de*)
  • two sheets of black cardboard
  • one sheet of white paper
  • some cables, one 470 Ohm resistor, one 1000uF capacitor, one small switch

Optionally you can upgrade the Word Clock with these components:

Step-by-Step instructions

  1. The first step is to stick the adhesive foils onto the glass pane of the picture frame. Tip: Here it helps to spray the glass pane with detergent water first so that the bubbles can be easily pushed out of the foil afterward.
  2. The most complex task is cutting out the individual letters from the black adhesive foil. The best way to do this is to print out a template with the letters and fix it on the glass pane with adhesive tape. Now the letters can be cut out with a sharp cutter knife.
Cut out letters from the adhesive foil
  1. To avoid reflections, it is recommended to paint the back panel with spray paint.
Painted backboard
  1. Now you divide the LED strip into 10 strips of 11 LEDs each and glue them in a zigzag pattern on the back of the picture frame. It helps to mark the desired position on the back panel.
LED strip on the backboard
  1. To reduce stray light from the individual LEDs, we now create a grid structure from the black cardboard. To do this, we cut 2 cm wide strips from the cardboard and cut them 11 or 12 times up to the middle. Afterward, the strips can be put together as grids as shown in the picture below.
The black cardboard grid structure
  1. Now it goes to the electronics. We solder the Arduino with the LED strips and the real-time clock module. It doesn’t matter if you use a hole board or solder the cables directly. As an add-on, you can add the radio clock receiver module DCF77, but this is not absolutely necessary. The real-time clock module with its battery always keeps the current time. But without using the radio receiver you have to flash the Arduino again when changing the battery of the RTC module.
Schematic of the word clock
Back panel with electronics
techniccontroller / think_wordclock

Arduino source code for the Wordclock on GitHub

  1. The next step is to flash the software to the Arduino. The complete source code can be found here on GitHub. It also describes which additional libraries need to be installed in the Arduino IDE. While connecting to a computer via USB, the small switch must be turned off (to prevent damage to the Arduino due to the high current drawn by the LEDs).
  2. So that the letters shine as a whole and not the individual LEDs are visible, we now stick a simple sheet of white paper on the back of the glass plate. Then we fix the grid with hot glue on the glass plate.
Grid structure inside the picture frame
  1. The last step is to insert the glass plate and back panel into the picture frame. You can also add an on/off switch in the picture frame.
The word clock at day
The word clock at night

You can extend the project as desired: As some of you might have noticed in the pictures above, a built-in light sensor allows automatic adjustment of the brightness of the LEDs to the environment. I placed the light sensor inside the first “K” and connect it to an analog input (A6) of the Arduino.

Have fun rebuilding it.

* The links are affiliate links. The offers do not come from me, however, I receive a commission through the reference, if then a purchase takes place, but without you incurring additional costs.

Share this post

63 Comments

Kerem · 07/03/2023 at 21:56

Hallo Edgar

Vielen Dank für das tolle Projekt! Ich habe die Uhr zusammen mit meinem Sohn nachgebaut mit meinen Kenntnissen als Mechatroniker. Beim Programmieren enden jedoch meine Fähigkeiten.
Ich habe alles wie beschrieben aufgebaut und alle Bibliotheken und Programm von Dir von Github benutzt. Mittels Neopixel Testprogramm konnte auch jede einzelne LED angesteuert werden.
Wenn ich die Uhr nun mit Deinem Code starte, dann initialisiert sie wie sie soll. Danach leuchten aber alle 114 LED permanent.
Gemäss seriellem Monitor stimmt aber die Uhrzeit, das DCF-Signal kommt an, und das angezeigte Grid passt auch.

Nun bin ich mit meinem Latein am Ende. Deshalb frage ich nun ob Du eine Idee hast, woran das liegen könnte?
ps. ich habe RBGW LEDs verbaut und dies an deinem Code auch angepasst, ansonsten keinerlei Änderungen vorgenommen.

Liebe Grüsse aus der Schweiz
Kerem

    Techniccontroller · 07/03/2023 at 22:50

    Hallo Kerem,

    danke für dein Kommentar.
    Spontan fällt mir keine Idee ein, was nicht stimmen könnte. Ich selbst habe noch nicht mit RGBW LEDs gearbeitet, aber eigentlich sollte die Adafruit Library das ordentlich machen (Deine Änderungen sollten sich auf Zeile 59 beschränken, oder? NEO_GRB -> NEO_RGBW).

    In welcher Farbe leuchten denn die LEDs? Kannst du die Farben durchschalten (kurz nacheinander EIN/AUS schalten)? Ändert sich dann etwas?

    VG
    Edgar

      Kerem · 08/03/2023 at 21:09

      Guten Abend Edgar

      Warum auch immer, als ich heute die Uhr nochmals angeschlossen habe, hat sie funktioniert. Nun leuchten die LEDs rot, im Serial Output wird auch ColorID=1 ausgegeben. Wie funktioniert der Farbwechsel? Ist es richtig, dass immer nur eine Farbe angezeigt wird und diese dann nach einer gewissen Zeit wechselt? Oder sollten die LEDs “regenbogenfarbig” sein?

      Vielen Dank für Deine schnelle Antwort gestern und einen schönen Abend noch!
      Lg, Kerem

        Techniccontroller · 08/03/2023 at 23:45

        Hallo Kerem,

        die Farbe ändert sich wenn die Worduhr innerhalb von 10 Sekunden ausgeschalten und wieder eingeschalten wird. Es gibt sieben Farbmodi, wobei Mode 0 (ColorID = 0) einen Regenbogen mit weißer Uhrzeit zeigt.

        Ansonsten bleibt die Farbe auch zwischen Neustarts konstant.

        VG
        Edgar

Yess · 24/02/2023 at 11:37

Hallo 🙂

Ich habe die Uhr ebenfalls gebaut und bin heilfroh, dass sie geht 😉

Jetzt aber zu meiner Frage:
Ich möchte die Wörter hinter einem dünnen Furnier verstecken, sodass man die Uhr an sich nicht sieht, erst wenn die Buchstaben leuchten. Leider sind nicht alle Farben dafür geeigent. Wo kann ich die Farbe ändern (z.B. nur grün, weiß) bzw die Helligkeit dauerhaft (bis auf den Nachtmodus) bei 100% haben?

Vielen Dank im Voraus

Viele Grüße
Yess

    Techniccontroller · 25/02/2023 at 12:21

    Hallo Yess,

    Danke für dein Kommentar.

    Ich habe die verschiedenen Farben in dem Array colors[] (Zeile 61) definiert.
    Falls du die Anzahl der Farben ändern möchtest kannst du dieses Array ändern. Aber bitte aufpassen, ich habe den Code auf GitHub gerade aktualisiert, damit diese Änderungen am colors Array keine Probleme im Rest des Codes hervorrufen. Also bitte nochmal deinen Code mit der aktuellsten Version auf GitHub abgleichen (wenn du in GitHub auf History klickst siehst du die Änderungen):

    https://github.com/techniccontroller/think_wordclock/commits/main/wordclock_german/wordclock_german.ino

    Um die Helligkeit immer auf 100% zu setzen muss du die Zeile 191

    matrix.setBrightness(brightness*2);
    

    durch

    matrix.setBrightness(255);
    

    ersetzen.

    VG
    Edgar

Mertl · 05/01/2023 at 11:56

Hallo Edgar,
vielen Dank für das tolle Projekt!
Ich werde es als 50x50cm Variante mit 30LED/m umsetzen, quasi als Mischung Deiner beiden Varianten.

Kann die Software auch die (süddeutsche) Variante “Dreiviertel” statt “Viertel vor”?
Das hier gezeigte Layout könnte es ja im Gegensatz zur 2.0 Version.
Hattest Du einen speziellen Grund das dort zu ändern?

Zum LDR:
Ist der Typ beliebig?
Verschaltung mit entsprechendem Vorwiderstand?

Grüße
Mertl

    Techniccontroller · 05/01/2023 at 21:23

    Hallo Mertl,
    Danke für dein Kommentar.
    Ja klar, man kann in diesem Layout hier auch “dreiviertel” statt “viertel vor” anzeigen lassen. Dazu müssen einfach folgenden Zeile (558-571) angepasst werden:
    von:

          //Viertel
          Serial.print("VIERTEL ");
          gridAddPixel(4,2);
          gridAddPixel(5,2);
          gridAddPixel(6,2);
          gridAddPixel(7,2);
          gridAddPixel(8,2);
          gridAddPixel(9,2);
          gridAddPixel(10,2);
          //Vor
          Serial.print("VOR ");
          gridAddPixel(0,3);
          gridAddPixel(1,3);
          gridAddPixel(2,3);
    

    nach:

          //dreiviertel
          Serial.print("DREIVIERTEL ");
          gridAddPixel(0,2);
          gridAddPixel(1,2);
          gridAddPixel(2,2);
          gridAddPixel(3,2);
          gridAddPixel(4,2);
          gridAddPixel(5,2);
          gridAddPixel(6,2);
          gridAddPixel(7,2);
          gridAddPixel(8,2);
          gridAddPixel(9,2);
          gridAddPixel(10,2);
    

    Ich hatte das Layout für die Wordclock 2.0 geändert um mein Name “Techniccontroller” im Layout unterbringen zu können, damit musste ich leider auf die Option des “Dreiviertel” verzichten. Natürlich kann man dieses Layout hier auch für Wordclock 2.0 verwenden und nur eine Zeile mit zufälligen Buchstaben hinzufügen (die 11.Zeile ist für ein paar Funktionen der V2.0 notwendig).

    LDR:
    Im Prinzip ist es egal welches LDR Module man verwendet. Wichtig ist nur das ein analoges (!) Signal zwischen 0-5V an den Arduino gegeben wird. Leider wechseln die Hersteller und Ausführungen der LDR Module regelmäßig, sodass ich dir kein konkretes nennen kann aber wenn man nach “LDR LM393 analog” sucht müsste man was passendes finden.

    VG
    Edgar

      Mertl · 07/01/2023 at 12:47

      Hallo,

      danke für den schnellen Support!

      Die Änderungen für “Viertel x+1” statt “Viertel nach x” hab ich dank des sehr übersichtlichen Codes schon umgesetzt. (Zeile 447 bis 461 entsprechend abändern und in Zeile 640 aus >=20 ein >=15 machen)
      Da hab ich glatt Lust bekommen meine Uralt Programmierkenntnisse aus COMAL Zeiten zu reaktivieren und den Code noch ein wenig zu erweitern.
      ZB eine Umschaltung der Uhrzeitanzeige per zusätzlichem Taster und später evtl noch eine Art Sekundenanzeige bzw dezente Hintergrundbeleuchtung indem ich eine zwölfte LED Reihe im rahmenlosen Aufbau kreisrund darum lege (eine LED pro 5 Minuten). Mal schauen, Ideen hab ich gerade genug…

      Viele Grüße
      Mertl

Jonas · 20/12/2022 at 21:54

Hallo zusammen,

ich habe das Projekt nachgebaut und bin begeistert über den Blog.
Jedoch funktioniert der Sketch bei mir nicht.
Ich habe auch keine Ausgabe im seriellen Monitor. Ist das normal?

Folgende Teile habe ich verbaut:
– Arduino Nano V3 (erstes war von AZ, habe ich jedoch auf Rat eines Freundes getauscht)
– RTC DS3231
– Widerstand und Kondensator
– Netzteil
– LED Stripe

Nicht verbaut:
– DCF77 Empfänger (momentan nicht lieferbar, kommt aber in zwei Wochen)
– Helligkeitssensor

Wenn ich den Beispielsketch für die LED´s einspiele, funktioniert dieser Einwandfrei.

Frage:
Muss ich im Sketch etwas ändern, weil der DCF77 und der Helligkeitssensor nicht vorhanden ist ?
Mein Board lässt sich nur mit Processor ATmega 328P (Old Bootloader) schreiben, ist hier schon ein Fehler?
Als Programmer ist AVRISP mkII automatisch gewählt, abwählen kann ich diesen gar nicht. Ist hier eine falsche Einstellung?

Bin etwas am verzweifeln, vielleicht kann mir jemand weiterhelfen.

Vielen Dank

    Techniccontroller · 20/12/2022 at 22:49

    Hallo Jonas,
    danke für dein Kommentar.
    Der Code funktioniert auch ohne angeschlossenem DCF und Helligkeitssensor.
    Das keine Ausgaben auf dem Seriellen Monitor angezeigt werden ist nicht gut. Das bedeutet, dass der Code gar nicht erst ausgeführt wird (kann z.B. ein Speicherproblem sein). Nutzt du den exakten Code von GitHub, oder hast du Änderungen am Code vorgenommen?

    Was die Auswirkungen bzgl. des Bootloaders sind , kann ich nicht beurteilen, ich musste bei mir den Processor noch nie umstellen (nutze aber auch keine originalen Arduinos ;)). Dein ausgewählter Programmer sollte passen.

    Kannst du mir mal deinen Code (*.ino Datei) und die komplette Ausgabe der Arduino IDE vom Kompilieren und Upload an mail@techniccontroller.com schicken. Dann kann ich mir das man anschauen.
    Vielleicht fällt mir direkt was auf. Ansonsten müssten man den Code Stück für Stück zusammensetzen und immer wieder Uploaden&Testen bis man auf die Zeilen stößt, die Probleme verursachen.
    VG
    Edgar

      Jonas · 21/12/2022 at 10:25

      Hallo Edgar,

      vielen Dank für deine Nachricht!

      Ich verwende den kompletten Code von Github. Geändert habe ich daran auch nichts.
      Gestern habe ich nochmals versucht, die RTC in einem Testprogramm am seriellen Monitor anzeigen zu lassen,
      leider ohne Erfolg. Jetzt habe ich nochmals genau nachgelesen und festgestellt, das die RTC von AZ mit 3,3V läuft, diese bei mir aber am 5V Netzteil hängt. Das war mir lediglich beim DCF77 bewusste mit der Betriebsspannung. Dies könnte meiner Meinung nach die Ursache sein. Morgen sollen hierzu die Spannungswandler 5V->3,3V bei mir eintreffen. Diesen baue ich dann zusammen mit einer neuen RTC ein und probiere es nochmals. Ich hoffe das löst mein Problem, andernfalls würde ich mich gerne nochmal melden.

      Vielen Dank und guten Start in den Tag !

Markus · 08/12/2022 at 11:54

Guten Tag, folgendes Problem tut sich bei mir auf wenn ein ein OLED Display (SSD1306 Chip 128 x 64 Pixel) zur Temperaturanzeige der RTC Temperatur einbinden möchte. Folgendes habe ich im Programmcode umgesetzt:

#include
#define OLED_ADDR 0x3C
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

Ergänzt in der:
void setup() {
Serial.begin(9600);
Wire.begin();
delay(3000);
display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
display.clearDisplay();
display.display();
}
Ergänzt in der:
void loop(){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(30,0);
display.print (“Temperature: “);
display.print(rtc.getTemperature());
display.println(” C”);
}

Kompilieren tut er und das Uploaden funktioniert auch, trotzdem Funktioniert das Programm nicht, da die Startsequenz nicht mal mehr startet und auch die Aktuelle Uhrzeit nichtmehr angezeigt wird.

Sobald ich aber folgendes auskommentiere :
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

funktioniert das Programm wieder wie es soll.
Liegt es an der Aktuellen Version der und der alten Version der , das es dadruch zu indeferenzen kommt?

Viele Grüße!

    Techniccontroller · 08/12/2022 at 16:41

    Hallo Markus,
    dieses Verhalten liegt sehr wahrscheinlich am begrenzten Speicher des Arduino Nano (2kB SRAM). Der Code für die Wortuhr benötigt bereits einen großen Teil des dynamischen Speichers des Arduinos. Auch das SSD1306 Display benötigt sehr viel Speicher (min. 1kB SRAM). Das führt dazu, dass das Programm zwar kompiliert aber nicht ausgeführt werden kann (dynamischer Speicher = SRAM, wird erst zur Laufzeit benötigt). Ich hatte solche Probleme bereits öfters bei mehr Pixeln oder der Kombination zwischen NeoPixel und Display.

    Hier kann man mehr zu dem Speicher-Problem lesen:
    https://learn.adafruit.com/memories-of-an-arduino/large-memory-consumers
    https://docs.arduino.cc/learn/programming/memory-guide

    Ich empfehle für das SSD1306 nicht die Standardbibliothek von Adafruit zu verwenden, sondern eine Lightweight-Bibliothek, welche Speicher spart indem direkt auf das Display geschrieben wird anstatt eine Abbild des 128×64 große Displays im Speicher zu halten. Nachteil ist, dass weniger Designmöglichkeiten existieren.
    Beispiel für eine solche Bibliothek ist folgende, es gibt aber sicher noch mehr:

    https://github.com/mgcastro/SSD1306_text

    Hoffe das hilft dir weiter.
    VG
    Edgar

      Markus · 02/03/2023 at 20:21

      Hallo Edgar,
      ich hätte noch ne Frage bezüglich der Farben. Ich würde gerne nur eine Farbe nutzen. Welchen Teil aus dem Code muss ich da genau weglassen und wo stelle ich dann die Farbe ein die ich möchte?

      VG
      Markus

        Techniccontroller · 03/03/2023 at 12:56

        Hallo Markus,

        Wenn du nur den Wechsel der Farben verhindern willst (also fest auf einer Farbe stehen bleiben willst) kannst du die Zeile 124 auskommentieren:

        activeColorID = (activeColorID+1)%numColors;
        

        und die gewünschte Farb-ID (aus dem Array colors) in Zeile 74 definieren:

        uint8_t activeColorID = 0;      // current active color mode
        

        Du kannst die Farben im colors Array bis auf ID 0 auch individuell anpassen.

        PS: Zeilenummern beziehen sich auf die aktuellste Version des Codes auf GitHub, ich habe den Code vor ein paar Tagen etwas geändert (siehe Kommentar von Yess), sodass die Zeilennummern eventuell etwas verrutscht sind.

        VG
        Edgar

          Markus · 13/03/2023 at 10:04

          Hallo Edgar,
          vielen dank für die Rückmeldung. Habe das soweit jetzt abgeändert, leider zeigt meine Uhr immer noch Grün an, obwohl ich die Farbe 1 ausgewählt habe und dies soll laut Farbmodus Rot sein. Ändere ich die Farbe Grün in der Matrix in weiß, ändert sich dann auch die Farbe. Er ist also ständig in 5, obwohl ich von vornherein die Farbe auf 1 definiert habe.
          VG
          Markus

          Techniccontroller · 13/03/2023 at 14:17

          Hallo Markus,

          ah okay, hab meinen Denkfehler gefunden :).
          Du musst neben Zeile 124 auch noch Zeile 114 auskommentieren um das Wechseln der Farben zu verhindern.

           EEPROM.get(EE_ADDRESS_COLOR, activeColorID); 

          Sonst holt sich das Programm die activeColorID immer wieder aus dem persistenten EEPROM Speicher und überschreibt deinen vorher gesetzten Wert.

          VG
          Edgar

Dennis · 09/11/2022 at 21:06

Hallo Edgar,
auf meinem Arduino Nano V3 leuchten die LEDs leider nicht… Im Serial Monitor scheint alles zu passen, da laufen die richtigen Werte durch. Schließe ich einen Arduino MEGA an, funktioniert die Uhr einwandfrei. Gibt es eventuell noch einen Trick mit dem Nano V3? Es ist kein Originaler von Arduino, sondern von joy-it, sollte aber laut Datenblatt 100% kompatibel sein. Oder könnte es einen anderen Grund geben?
Danke dir und viele Grüße
Dennis

    Techniccontroller · 10/11/2022 at 0:09

    Hallo Dennis,
    danke für deinen Kommentar.
    Ich würde persönlich noch folgenden zwei Tests ausprobieren um zu prüfen ob es an dem Board liegt:
    – Probiere einen anderen Pin um die LEDs anzusteuern,
    – Probiere ein einfaches Testprogramm (z. B. einen Beispielcode aus der Adafruit_NeoPixel Bibliothek)

    Wenn beides nicht klappt, würde ich sagen, dass etwas an dem Board nicht stimmt. Vielleicht beeinflussen irgendwelche Kapazitäten das Signal (könnten man mit einem Oszi prüfen). Mir sind ansonsten keine Probleme mit Arduino Nano bekannt.

    VG
    Edgar

      Dennis · 10/11/2022 at 20:06

      Hallo Edgar,

      danke dir für die Antwort. Es funktioniert mit dem Arduino Nano V3, sobald ich die Funktion checkDCFSignal auskommentiere. Sobald ich checkDCFSignal wieder einbinde, gehen die LEDs nicht an. Laut Serial Monitor ist die Signalqualität gut und auch die anderen Werte laufen durch; heißt, das Programm bricht nicht ab. Irgendwie scheint der Nano das nicht zu vertragen….

      Viele Grüße
      Dennis

        Techniccontroller · 11/11/2022 at 0:05

        Hallo Dennis,
        okay das ist interessant, ich hatte die Funktion checkDCFSignal() tatsächlich nur zu Debuggingzwecken drin und deshalb auch im Code auskommentiert. Ich hab nicht mehr in Erinnerung ob das bei mir auch die LEDs gestört hat.

        Es kann aber durchaus sein, dass delayMicroseconds() die Konfiguration der Timer und somit die Ansteuerung der LEDs beeinflusst. Müsste man mal genauer untersuchen, ich hatte ähnliche Konflikte schon vorher. Die NeoPixel-LEDs benötigen ein sehr genaues Timing, da können andere Codeteile leicht Störungen hervorrufen.
        Ich habe aktuell leider keine passende Hardware zur Verfügung um mir das im Detail anzuschauen.
        Für die Funktion der Wortuhr ist die Funktion checkDCFSignal() nicht notwendig, deshalb würde ich an deiner Stelle die Funktion einfach auskommentiert lassen.

        VG
        Edgar

          Dennis · 11/11/2022 at 7:56

          Hallo Edgar,
          genau, ich lasse sie einfach auskommentiert. Interessant, dass der Arduino Mega damit klarkommt. Falls ich noch rausfinde, an was es genau liegt, gebe ich dir Bescheid.
          Auf jeden Fall nochmal vielen Dank für den Code! 🙂
          Beste Grüße
          Dennis

          Techniccontroller · 13/01/2023 at 22:37

          UPDATE 13.01.2023:

          Ich habe den Fehler gefunden.
          Es gab ein Speicherproblem. Die langen Strings in Serial.println() haben zu viel Speicher benötigt. Ich habe den Code nun optimiert. Jetzt wird die Signalstärke zudem bei jedem Start mit den LEDs angezeigt. (erste LED blinkt blau, dann wird rot/grün die Signalqualität als Balken gezeigt).

          Aktualisierter Code ist auf GitHub zu finden: https://github.com/techniccontroller/think_wordclock

          VG
          Edgar

Nicklas · 13/10/2022 at 21:01

Hallo,
Ich bin jetzt fertig mit der Uhr und finde sie ein wenig zu hell, kann man die Helligkeit ändern? Und kann man den Nachtmodus an verschiedenen Tagen zu verschiedenen Uhrzeiten anmachen?

Ich bin selbst daran interessiert an der TUM zu studieren und habe ein paar Fragen, die gerne einem Schüler stellen will. Kann ich Sie per E-Mail erreichen?

    Techniccontroller · 13/10/2022 at 21:41

    Hallo Nicklas,

    freut mich, dass deine Uhr funktioniert.

    Die Helligkeit kann einfach über die Funktion
    matrix.setBrightness(…)
    auf einen Wert zwischen 0-255 gestellt werde. Je nachdem, ob du den Lichtsensor verwendest oder nicht wird im Code die Helligkeit dynamisch angepasst. Du kannst den Teil des Code (am Anfang der loop() ) aber einfach auskommentieren und einen festen Wert für die Helligkeit vergeben.

    Der Nachmodus ist aktuell nur anhand der Uhrzeit definiert. Aber mit ein paar mehr if()-Bedingungen können auch für verschiedene Tage individuelle Zeiten für den Nachtmodus definiert werden. Die Variable rtctime bietet neben hour() auch die Funktion day() um auf den aktuellen Wochentag zugreifen zu können.
    Ich denke das kannst du mal selbst probieren zu implementieren.

    Bzgl. TUM, kannst du mir gerne ne Mail schreiben (an mail(at)techniccontroller.com).

    VG
    Edgar

Matthias · 11/10/2022 at 21:30

Hallo Diddy – danke für deine Tolle Arbeit. Ich möchte die Uhr für meine Frau zum Geburtstag bauen. Leider bekomme ich trotz aller Bibliotheken von Github den Code nicht kompiliert.

Kannst du weiterhelfen?

Hier die Fehlermeldungen:
c:\Users\Schule\Documents\Arduino\libraries\DCF77\DCF77.cpp: In static member function ‘static void DCF77::finalizeBuffer()’:
c:\Users\Schule\Documents\Arduino\libraries\DCF77\DCF77.cpp:160:21: error: ‘now’ was not declared in this scope
filledTimestamp = now();
^~~
c:\Users\Schule\Documents\Arduino\libraries\DCF77\DCF77.cpp:160:21: note: suggested alternative: ‘pow’
filledTimestamp = now();
^~~
pow
(…)

c:\Users\Schule\Documents\Arduino\libraries\DCF77\DCF77.cpp:326:64: error: ‘now’ was not declared in this scope
time_t currentTime =latestupdatedTime – UTCTimeDifference + (now() – processingTimestamp);
^~~
c:\Users\Schule\Documents\Arduino\libraries\DCF77\DCF77.cpp:326:64: note: suggested alternative: ‘pow’
time_t currentTime =latestupdatedTime – UTCTimeDifference + (now() – processingTimestamp);
^~~
pow

exit status 1

Compilation error: exit status 1

(edited by techniccontroller: shorted the comment)

    Techniccontroller · 12/10/2022 at 20:15

    Hallo Matthias,

    danke für deinen Kommentar.
    Bitte kopiere alle Bibliotheken direkt aus dem GitHub repository:
    https://github.com/techniccontroller/think_wordclock/tree/main/libraries
    in deinen ‘libraries’-Ordner von der Arduino-IDE um Versionskompatibilitätsprobleme auszuschließen.
    Mit diesen Bibliotheken kompliert der Code bei mir fehlerfrei.

    Die Ordnerstruktur sollte dann in etwa so aussehen:

    [MySketchbookLocation]

    └───libraries
    │ └───Adafruit-GFX-Library
    │ └───Adafruit_NeoMatrix
    │ └───Adafruit_NeoPixel
    │ └───Adafruit_BusIO
    │ └───DCF77
    │ └───RTClib
    │ └───Time
    │ └─── (…)

    └───think_wordclock
    │ └───wordclock_german
    │ │ └───wordclock_german.ino
    │ └───README.md

    Bitte gerne nochmal melden falls es weitere Probleme gibt.

    Viele Grüße
    Edgar

Thomas · 06/09/2022 at 20:15

Hallo Edgar
Supertolles Projekt! Version 1 ist schon am laufen, Verrsion 2 noch nicht – bin leider auch kein Arduinoprofi 😉
Bei der Wordclock V2 bleibt Arduino bei
‘Base64’ was not declared in this scope; did you mean ‘base64’?
hängen, vielleicht kannst du mir helfen?

VG

Thomas

    Techniccontroller · 06/09/2022 at 21:45

    EDIT 17.09.2022:

    Hallo Thomas,
    thank you for your comment
    There was an issue with the library configuration on my computer. I have now included the Base64 library in the GitHub Repo. Please check again the GitHub repo and copy the two files (Base64.h, Base64.cpp) next to the wordclock_esp8266.ino file. Also change the #include statement in the wordclock_esp8266.ino file

    from
    #include

    to
    #include “Base64.h”

    BR
    Edgar

Nicklas · 04/09/2022 at 11:49

Hallo,

kann man den Code auch ohne den DCF benutzen? Wenn ja, was muss ich am Code ändern?

    Techniccontroller · 04/09/2022 at 18:27

    Hallo Nicklas,
    danke für dein Interesse an dem Projekt. Eigentlich musst du an meinem originalen Code nichts ändern. Wenn kein DCF angeschlossen ist, wird er auch nicht verwendet und dessen Funktion ignoriert. Sollte also laufen auch ohne DCF.

    Aber bevor du meinen Code laufen lässt ist es sinnvoll zunächst mit einem kleinen Testprogramm zu prüfen ob alle LEDs und die RTC funktionieren.

    Im Anschluss kann man meine Programm probieren, ob es funktioniert, und wenn nötig via Serialport (USB) debuggen.

    Wenn du weitere Fragen hast, gerne melden.
    VG Edgar

    (Deinen geposteten Code werde ich hier in den Kommentaren der Übersicht wegen löschen.)

      Nicklas · 30/09/2022 at 11:53

      Hallo,

      Danke für deine schnelle Antwort. Ich habe nun nach einer kurzen Pause wieder angefangen am Projekt zu arbeiten. Ich habe den Code jetzt in original Form gelassen und habe den DCF nicht angeschlossen. Wenn ich versuche, den Code hochzuladen bekomme ich den gleichen Fehler wie Sandy(25/10/2021 um 20:03). Ich habe die gesamte Datei von Github runtergeladen, aber der Fehler bleibt. Was kann ich machen? Und wo finde ich das Testprogramm, um alle LEDs und den RTC zu testen?

      Grüße
      Nicklas

        Nicklas · 30/09/2022 at 14:04

        Hallo Nochmal,
        Nach weiteren versuchen hat es funktioniert. Vielen Dank! Eine Frage noch: ist es möglich, sie per E-Mail zu kontaktieren? Ich habe selbst Interesse daran bei der TUM zu studieren und habe ein paar Fragen, die ich einem Schüler an der Uni fragen möchte. Vielen Dank.

        Grüße
        Nicklas

Tobias · 31/03/2022 at 17:35

Hallo Edgar,
super geiles Projekt mit entsprechender Anleitung. Bin gerade am Zusammensuchen der Teile. Dabei ist mir folgendes aufgefallen:
In der Stückliste ist ein Widerstand mit 470 Ohm angegeben, im Schaltplan (Punkt 6) einer mit 220 Ohm. Was ist richtig?
Noch eine Frage zur Größe:
Du hast hier die Streifen der LEDs Zeilenweise zusammen gelassen, dadurch ist die Größe 24×30 cm zustande gekommen. Wenn man die LED-Streifen auf trennt und mit Aderstücken wieder zusammenlötet um einen größeren Bilderrahmen zu füllen, z.B. 50 x 50 cm, reicht die Helligkeit der LEDs für die größeren Buchstabenfelder noch aus?
Grüße Tobias

    Techniccontroller · 31/03/2022 at 22:44

    Hallo Tobias,
    danke für deinen Kommentar. Da ist tatsächlich ein Fehler im Bild, 470Ohm ist die empfohlene Größe des Widerstands. Werde ich gleich korrigieren :).

    Bezüglich der Größe der Wortuhr würde ich an deiner Stelle einen LED Streifen mit 30 LEDs/Meter (statt 60LEDs/Meter) nehmen, damit hast du auch den größeren Abstand und musst nicht so viel löten. Hat bei mir gut funktioniert (siehe meine Wortuhr 2.0, welche ebenfalls die Größe von 50x50cm hat: https://techniccontroller.de/word-clock-with-wifi-and-neopixel/).
    Die Helligkeit reicht vollkommen aus. Anstatt des normalen weißen Papiers habe ich allerdings weißes Backpapier verwendet und das Lichtgitter mit Spiegelfarbe bemalt (statt schwarz). Das hat vielleicht etwas geholfen, aber es würde sicher auch ohne gehen.

    Viel Spaß beim Nachbauen der Uhr.

    VG Edgar

      Tobias · 02/04/2022 at 23:36

      Hallo Edgar,
      danke für die schnelle Antwort.
      Ich habe mir dein Wordclock 2.0 Projekt natürlich auch gleich angeschaut und bin begeistert.
      Für den Anfang werde ich aber wohl doch die Uhr hier mit Funkempfänger hier ausprobieren und nicht mit NTP Server.
      Kannst du mir sagen wo genau ich den Helligkeitssensor anschließen muss? Das ist nicht in der Schematic enthalten und auf dem Foto leider nicht zu erkennen.
      Danke schonmal
      Gruß Tobias

        Tobias · 03/04/2022 at 12:29

        Hab es im Code gefunden : A6.

          Techniccontroller · 03/04/2022 at 14:17

          Ja genau, den Sensor hatte ich nicht nochmal explizit in den Schaltplan eingezeichnet.

          Tobias · 16/04/2022 at 23:05

          Hallo Edgar,
          ich muss mich nochmal an dich wenden. Der Nightmode schein bei mir nicht zu funktionieren. Die Uhr leuchtet dauerhaft durch, auch in der Nacht. Im Code steht ja foldendes:

          // convert time to a grid representation
          timeToArray(rtctime.hour(), rtctime.minute());
          // clear matrix
          matrix.fillScreen(0);

          // add condition if nightmode (LEDs = OFF) should be activated
          if(rtctime.hour() > 22 && rtctime.hour() < 6){ // turn in off LEDs between 22:00 and 6:00
          // do nothing, matrix already cleared (see previous statment)
          } else {
          // do the normal job and display the time on the wordclock

          muss ich hier noch an irgend einer Stelle irgendwas aktivieren oder löschen? Direkt davor wird ja die Uhrzeit auf das Array geschrieben. Kann das die Ursache sein?
          Grüße
          Tobias

          Techniccontroller · 16/04/2022 at 23:34

          Hallo Tobias,
          Das ist tatsächlich seltsam, eigentlich sollte das klappen. Ich hatte das Feature vor einem halben Jahr für jemanden implementiert (leider blind, da ich die Uhr damals nicht zur Hand hatte). Hat damals scheinbar funktioniert und ich sehe aktuell auch den Fehler im Code nicht. Erst der Befehl drawOnMatrix() überträgt die Daten aus dem grid auf die Matrix. Und der Befehl wird ja durch die Bedingung übersprungen.

          Ich kann mich morgen nochmal dran setzen und es auf meiner Uhr ausprobieren.

          VG
          Edgar

          Techniccontroller · 17/04/2022 at 20:08

          Ich hab den Fehler gefunden: die Bedingung für den Nightmode war falsch. Der Code muss so aussehen:

            // add condition if nightmode (LEDs = OFF) should be activated
            // turn off LEDs between NIGHTMODE_START and NIGHTMODE_END
            uint8_t nightmode = false;
            if(NIGHTMODE_START > NIGHTMODE_END && (rtctime.hour() >= NIGHTMODE_START || rtctime.hour() < NIGHTMODE_END)){
              // nightmode duration over night (e.g. 22:00 -> 6:00)
              nightmode = true;
            }
            else if(NIGHTMODE_START < NIGHTMODE_END && (rtctime.hour() >= NIGHTMODE_START && rtctime.hour() < NIGHTMODE_END)){
              // nightmode duration during day (e.g. 18:00 -> 23:00)
              nightmode = true;
            }
          

          Der vollständige Code ist wie immer auf GitHub:

          https://github.com/techniccontroller/think_wordclock

Luegenwalder · 24/01/2022 at 14:14

Moin,

das ist echt ein geiles Projekt und ich bin grade dabei es nach zu machen.
Leider habe ich ein Problem beim Kompilieren.
Folgender Fehler wird ausgegeben.

In file included from C:\Program Files (x86)\Arduino\libraries\Adafruit_GFX_Library\Adafruit_GrayOLED.cpp:20:0:
C:\Program Files (x86)\Arduino\libraries\Adafruit_GFX_Library\Adafruit_GrayOLED.h:30:10: fatal error: Adafruit_I2CDevice.h: No such file or directory
#include
^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
exit status 1
Fehler beim Kompilieren für das Board Arduino Nano.

Bin leider kein Experte im programmieren.
Würde mich freuen wenn Sie mir helfen könnten.

Freundliche Grüße

    Techniccontroller · 24/01/2022 at 22:15

    Hallo,

    kann es sein, dass Sie eine ältere Arduino IDE version nutzen?
    Es wurde scheinbar eine fehlenden Arduino Bibliothek nicht automatisch mit der Adafruit_GFX-Library mit installiert.

    Bitte mal versuchen diese Bibliothek noch zu installieren: https://github.com/adafruit/Adafruit_BusIO

    Diese sollte die fehlende Datei beinhalten.

    Vielen Grüße
    Edgar

Dieter · 26/11/2021 at 2:55

Hallo zusammen!
Cooles Projekt, bin gerade dabei, es nachzumachen.
Dabei stellt sich mir die Frage:
Für was benötigt ihr den 12 V Anschluss?
Der Arduino braucht ja 5 V und die LEDs werden ja auch nur mit 5V versorgt oder?
Vielen Dank schonmal!
Liebe Grüße

    Techniccontroller · 26/11/2021 at 9:32

    Hallo Dieter,

    danke für den Hinweis, du hast einen Fehler entdeckt :).
    Natürlich sind das nur 5V als Versorgungsspannung, wie ich es auch in der Komponentenliste am Anfang des Artikels geschrieben habe. Ich habe das Bild mit den 12V nun korrigiert.

    Viel Spaß beim Nachbauen.

    Vielen Dank
    VG
    Edgar

Sandy · 25/10/2021 at 20:03

Hi, I tried da make this Wordclock too. All is finished, but the code will not run. I installed all Library with the Links and tried the Versions. The DFC77.cpp gives so many Faults . I hope you can Help me. Sorry for my English, I’m From Switzerland and if you speak German, better for me.
Like this:
sers/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp: In static member function ‘static void DCF77::int0handler()’:
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:102:14: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
LogLn(“rCT”);
^
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:109:17: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
LogLn(“rPW”);
^
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp: In static member function ‘static void DCF77::appendSignal(unsigned char)’:
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:146:14: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
LogLn(“EoB”);
^
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp: In static member function ‘static void DCF77::finalizeBuffer()’:
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:157:13: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
LogLn(“BF”);
^
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:160:21: error: ‘now’ was not declared in this scope
filledTimestamp = now();
^~~
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:160:21: note: suggested alternative: ‘pow’
filledTimestamp = now();
^~~
pow
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:166:14: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
LogLn(“EoM”);
^
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp: In static member function ‘static bool DCF77::receivedTimeUpdate()’:
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:183:25: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
LogLn(“Invalid parity”);
^
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:189:46: error: ‘now’ was not declared in this scope
time_t processedTime = latestupdatedTime + (now() – processingTimestamp);
^~~
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:189:46: note: suggested alternative: ‘pow’
time_t processedTime = latestupdatedTime + (now() – processingTimestamp);
^~~
pow
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:191:33: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
LogLn(“Time outside of bounds”);
^
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:197:20: error: ‘SECS_PER_MIN’ was not declared in this scope
if(difference < 2*SECS_PER_MIN) {
^~~~~~~~~~~~
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:197:20: note: suggested alternative: 'WCHAR_MIN'
if(difference < 2*SECS_PER_MIN) {
^~~~~~~~~~~~
WCHAR_MIN
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:198:34: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
LogLn("close to internal clock");
^
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:209:25: error: 'SECS_PER_MIN' was not declared in this scope
if(shiftDifference < 2*SECS_PER_MIN) {
^~~~~~~~~~~~
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:209:25: note: suggested alternative: 'WCHAR_MIN'
if(shiftDifference Min-((rx_buffer->Min/16)*6);
^~~~~~
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:286:12: error: request for member ‘Hour’ in ‘time’, which is of non-class type ‘time_t(time_t*) {aka long unsigned int(long unsigned int*)}’
time.Hour = rx_buffer->Hour-((rx_buffer->Hour/16)*6);
^~~~
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:287:12: error: request for member ‘Day’ in ‘time’, which is of non-class type ‘time_t(time_t*) {aka long unsigned int(long unsigned int*)}’
time.Day = rx_buffer->Day-((rx_buffer->Day/16)*6);
^~~
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:288:12: error: request for member ‘Month’ in ‘time’, which is of non-class type ‘time_t(time_t*) {aka long unsigned int(long unsigned int*)}’
time.Month = rx_buffer->Month-((rx_buffer->Month/16)*6);
^~~~~
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:289:12: error: request for member ‘Year’ in ‘time’, which is of non-class type ‘time_t(time_t*) {aka long unsigned int(long unsigned int*)}’
time.Year = 2000 + rx_buffer->Year-((rx_buffer->Year/16)*6) -1970;
^~~~
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:290:24: error: ‘makeTime’ was not declared in this scope
latestupdatedTime = makeTime(time);
^~~~~~~~
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:290:24: note: suggested alternative: ‘mktime’
latestupdatedTime = makeTime(time);
^~~~~~~~
mktime
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp: In static member function ‘static time_t DCF77::getTime()’:
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:310:44: error: ‘now’ was not declared in this scope
time_t currentTime =latestupdatedTime + (now() – processingTimestamp);
^~~
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:310:44: note: suggested alternative: ‘pow’
time_t currentTime =latestupdatedTime + (now() – processingTimestamp);
^~~
pow
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp: In static member function ‘static time_t DCF77::getUTCTime()’:
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:325:42: error: ‘SECS_PER_HOUR’ was not declared in this scope
int UTCTimeDifference = (CEST ? 2 : 1)*SECS_PER_HOUR;
^~~~~~~~~~~~~
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:326:64: error: ‘now’ was not declared in this scope
time_t currentTime =latestupdatedTime – UTCTimeDifference + (now() – processingTimestamp);
^~~
/Users/ayleen/Documents/Arduino/libraries/DCF77/DCF77.cpp:326:64: note: suggested alternative: ‘pow’
time_t currentTime =latestupdatedTime – UTCTimeDifference + (now() – processingTimestamp);
^~~
pow
exit status 1
Error compiling for board Arduino Uno.

    Techniccontroller · 25/10/2021 at 21:59

    Hallo Sandy,

    ich habe gerade bemerkt, dass es bei den Bibliotheken zu Kompatibilitätsprobleme kommen kann, wie du sie gesehen hast (durch verschieden Versionen die es gibt). Ich habe daher genau meine Versionen der Bibliotheken auf GitHub hochgeladen. Damit sollte es ohne Probleme funktionieren den Code zu kompilieren.
    https://github.com/techniccontroller/think_wordclock

    In English:
    I have just noticed that there can be compatibility issues with the libraries as you have seen (due to different versions being available). I have therefore uploaded exactly my versions of the libraries to GitHub. With this, it should work without problems to compile the code.

    BR
    Edgar

      sandy · 26/10/2021 at 15:54

      Danke für die schnelle Antwort. Gibt es eine Möglichkeit , die Library in einem Stück runterzuladen? Vielleicht war das jetzt ne blöde Frage, aber…ich kann nur einzelne als ziel speichern, es erzeugt dann ein html daraus, wo ich den Suffix html wieder entferne. Mac Safari Browser.

        Techniccontroller · 26/10/2021 at 16:54

        Du kannst einfach das ganze Repository als zip-Archiv runterladen. Dazu einfach in GitHub auf den grünen Button “Code” klicken und “Download ZIP” auswählen.

        VG
        Edgar

          Sandy · 26/10/2021 at 18:51

          Ich konnte zum ersten mal Compilieren. WOW. Vielen Dank. Jetzt kann ich endlich den Arduino Einbauen und schauen on dann auch ein paar Wörter leuchten. Schon mal vielen Dank im Voraus. Mal sehen obs wirklich klappt.

          Sandy · 27/10/2021 at 22:11

          Ich muss dir grossen Dank aussprechen. Die Uhr ist fertig. Sogar auf Schweizerdeutsch. Ob der DCF77 gut funktioniert sehen wir in Zukunft. Im Moment sieht es einfach nur toll aus. Alle Teile mit dem 3D Drucker erstellt. Danke nochmals

          Techniccontroller · 28/10/2021 at 13:42

          Super!. Freut mich. Viel Spaß mit der Uhr.

Margo · 19/10/2021 at 7:50

Thank you for the fast response! It worked 🙂

The only thing is the leds are shining in red and I prefer white. Should I change the activeColorID or how does it work?

Thanks a lot for helping me! It is a gift and they will absolutely love it!
Kind regards,
Margo

    Techniccontroller · 19/10/2021 at 8:15

    Hello Margo,

    you can turn OFF and ON the Wordclock within 10 seconds to switch the color (activeColorID will be incremented each time). The color will persist. There are seven different colors implemented.

    BR
    Edgar

Margo · 18/10/2021 at 19:39

Hi Edgar!

Love this tutorial! Helped me a lot! I was wondering if I could change the code, such that the color matrix is turned off at night. So only the intended leds are shining in white all the time. Can you please tell me how to do it? 🙂

Thanks in advance!
Kind regards,
Margo

    Techniccontroller · 18/10/2021 at 20:06

    Hello Margo,
    thanks for your comment. Of course, this is possible. I created a variant of the source code on GitHub with a ‘nightmode’ implemented.

    See: https://github.com/techniccontroller/think_wordclock/commit/78d81ef1648b1820b1d0fde8f827e4d95505c185

    I hope it helps you. If you have more questions please feel free to ask.
    I did not test the code, because do not have hardware by hand.
    BR
    Edgar

      Margo · 19/10/2021 at 7:49

      Thank you for the fast response! It worked 🙂

      The only thing is the leds are shining in red and I prefer white. Should I change the activeColorID or how does it work?

      Thanks a lot for helping me! It is a gift and they will absolutely love it!
      Kind regards,
      Margo

Diddy · 27/04/2021 at 8:17

BTW: If you are based in Switzerland or Germany: Feel free to send me your Paypal / Twint account to my Mail. I happy to support you with some Beers for this work!

Diddy · 29/03/2021 at 15:58

Hi there!

Thank you very much for this tutorial! I love it and have used the source code for my own wordclock in a decent bigger format of 50x50cm 😉

However, one issue is bothering me: I am trying to set the European daylight-saving (Sommerzeit) to the wordclock. Unfortuntely the clock sticks to the standard time. How have you solved this issue on your side?

Best, Diddy

    Techniccontroller · 10/04/2021 at 12:27

    Hello Diddy,
    thank you for your comment. Do you also use the DFC77 or just the RTC? If you are using the DFC77 then the time should be correct (always German time).
    If you are using the RTC, then it will update the time to the time of the computer you are used for flashing the arduino (but only after you removed the battery of RTC for short time).

    PS: I did a little bugfixing on github, a few days back to update the time of RTC more often with the time from DFC77.

    BR
    Edgar

      Diddy · 27/04/2021 at 8:14

      Hi Edgar

      Thank you for your reply and the additional information.

      Yes, indeed, using the DFC works perfectly fine (before I haven’t had it attached). And thank you for the new version – It’s now adapted to Swiss German.

      If you don’t mind, I would have one last question: I like the colors of the background. However, might it be possible to light-up some dedicated LEDs only (instead of the entire matrix)? The reason is, that I have added some “hidden” text which would like to illuminate. I have tried to add a new condition to the code, but it seem like I am not a well developer 😉

      BR, Diddy

        Techniccontroller · 01/05/2021 at 12:49

        Hello Diddy,
        sorry for the late reply. I usally have only on the weekend time to work on the website :).
        I sent a mail to you. I think I can help you with your question.

        BR
        Edgar

Leave a Reply

Your email address will not be published. Required fields are marked *