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 following material for the wordclock. Overall they cost less then 100 EURO.

  • wooden picture frame 24x30cm
  • black adhesive foil
  • NeoPixel-Strip with 114 LEDs (60LEDs/m)
  • Arduino Nano V3.0
  • Real-Time-Clock Modul DS3231
  • Power supply 5V/3A
  • 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:

  • DCF77 Receiver Module
  • Light sensor module (LDR)
  • Rocker switch as on/off switch (in the power supply lines)
  • breadboard PCB

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 a 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.
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 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 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 to adjust 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.

Share this post

44 Comments

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

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.