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 (RTC) 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 and/or the light sensor module for automatic brightness control, but this is not absolutely necessary. The RTC 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 analogue 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

82 Comments

Marc · 28/11/2023 at 11:37

Grüezi Edgar,
ich habe ein Problemchen, eine Kettenreaktion an Fehlercodes.
Weißt du wie man die wegbekommt?

https://ibb.co/QFQR3rV
https://ibb.co/gDPL4CQ

    Techniccontroller · 28/11/2023 at 14:07

    Hallo Marc,
    danke für dein Kommentar.

    Aus deinen Screenshots sehe ich, dass du zwei .ino-Dateien in deinem Arduino Projektordner (“Wordclock Codinus”) hast. Die Datei “BUCHANZEIGE.ino” hat dort nichts zu suchen. Ich weiß nicht, was da drin steht, auch weiß ich nicht ob der Code in “Wordclock Codinus.ino” meinem Code entspricht. Ich vermute allerdings, dass die Fehlermeldungen daher kommen, dass in beiden Dateien die glichen Funktionen und Variablen definiert wurden.

    Ich würde empfehlen meinen Originalcode der Wortuhr von GitHub herunterzuladen und zu probieren ob dieser im Originalzustand kompilierbar ist. Dann kannst du deine Änderungen step-by-step implementieren und immer prüfen ob die Kompilierung nach wie vor klappt.

    Wenn du weiter auf Probleme stößt, kannst du dich gerne nochmal melden.

    Viele Grüße
    Edgar

      Marc · 01/12/2023 at 9:00

      Hallo,
      wir haben jetzt die Codes von deiner Website heruntergeladen. Leider gibt es immer noch Probleme, daher für uns die Codes nicht ausführlich genug Kommentiert sind, können wir es auch nicht eigenständig lösen.
      Hier ist die Fehlermeldung:
      C:\Users\2018WE~1\AppData\Local\Temp\ccZrrGS7.ltrans0.ltrans.o: In function `printDateTime’:
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:288: undefined reference to `DateTime::dayOfTheWeek() const’
      C:\Users\2018WE~1\AppData\Local\Temp\ccZrrGS7.ltrans0.ltrans.o: In function `global constructors keyed to 65535_0_wordclock_german.ino.cpp.o.2049′:
      :(.text.startup+0x70): undefined reference to `DCF77::DCF77(int, int, bool)’
      :(.text.startup+0x8a): undefined reference to `Adafruit_NeoMatrix::Adafruit_NeoMatrix(int, int, unsigned char, unsigned char, unsigned int)’
      :(.text.startup+0x94): undefined reference to `Adafruit_NeoMatrix::Color(unsigned char, unsigned char, unsigned char)’
      :(.text.startup+0xa6): undefined reference to `Adafruit_NeoMatrix::Color(unsigned char, unsigned char, unsigned char)’
      :(.text.startup+0xb4): undefined reference to `Adafruit_NeoMatrix::Color(unsigned char, unsigned char, unsigned char)’
      :(.text.startup+0xc2): undefined reference to `Adafruit_NeoMatrix::Color(unsigned char, unsigned char, unsigned char)’
      :(.text.startup+0xd0): undefined reference to `Adafruit_NeoMatrix::Color(unsigned char, unsigned char, unsigned char)’
      C:\Users\2018WE~1\AppData\Local\Temp\ccZrrGS7.ltrans0.ltrans.o::(.text.startup+0xde): more undefined references to `Adafruit_NeoMatrix::Color(unsigned char, unsigned char, unsigned char)’ follow
      C:\Users\2018WE~1\AppData\Local\Temp\ccZrrGS7.ltrans0.ltrans.o: In function `setup’:
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:103: undefined reference to `Adafruit_NeoPixel::begin()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:104: undefined reference to `Adafruit_NeoPixel::setBrightness(unsigned char)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:107: undefined reference to `RTC_DS3231::begin()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:121: undefined reference to `RTC_DS3231::now()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:121: undefined reference to `DateTime::secondstime() const’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:135: undefined reference to `Adafruit_NeoMatrix::Color(unsigned char, unsigned char, unsigned char)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:140: undefined reference to `Adafruit_NeoMatrix::Color(unsigned char, unsigned char, unsigned char)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:140: undefined reference to `Adafruit_NeoMatrix::drawPixel(int, int, unsigned int)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:143: undefined reference to `Adafruit_NeoPixel::show()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:148: undefined reference to `Adafruit_NeoMatrix::Color(unsigned char, unsigned char, unsigned char)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:148: undefined reference to `Adafruit_NeoMatrix::drawPixel(int, int, unsigned int)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:149: undefined reference to `Adafruit_NeoMatrix::Color(unsigned char, unsigned char, unsigned char)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:149: undefined reference to `Adafruit_NeoMatrix::drawPixel(int, int, unsigned int)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:150: undefined reference to `Adafruit_NeoPixel::show()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:159: undefined reference to `DCF77::Start()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:162: undefined reference to `RTC_DS3231::lostPower()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:165: undefined reference to `RTC_DS3231::now()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:168: undefined reference to `DateTime::DateTime(__FlashStringHelper const*, __FlashStringHelper const*)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:168: undefined reference to `RTC_DS3231::adjust(DateTime const&)’
      C:\Users\2018WE~1\AppData\Local\Temp\ccZrrGS7.ltrans0.ltrans.o: In function `loop’:
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:191: undefined reference to `Adafruit_NeoPixel::setBrightness(unsigned char)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:195: undefined reference to `RTC_DS3231::now()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:197: undefined reference to `DateTime::DateTime(DateTime const&)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:200: undefined reference to `RTC_DS3231::getTemperature()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:204: undefined reference to `DateTime::DateTime(DateTime const&)’
      C:\Users\2018WE~1\AppData\Local\Temp\ccZrrGS7.ltrans0.ltrans.o: In function `checkForNewDCFTime’:
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:374: undefined reference to `DCF77::getTime()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:377: undefined reference to `setTime(unsigned long)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:379: undefined reference to `second()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:379: undefined reference to `minute()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:379: undefined reference to `hour()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:379: undefined reference to `day()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:379: undefined reference to `month()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:379: undefined reference to `year()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:379: undefined reference to `DateTime::DateTime(unsigned int, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:381: undefined reference to `DateTime::DateTime(DateTime const&)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:386: undefined reference to `RTC_DS3231::adjust(DateTime const&)’
      C:\Users\2018WE~1\AppData\Local\Temp\ccZrrGS7.ltrans0.ltrans.o: In function `DCF77signalQuality’:
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:352: undefined reference to `Adafruit_NeoMatrix::Color(unsigned char, unsigned char, unsigned char)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:352: undefined reference to `Adafruit_NeoMatrix::drawPixel(int, int, unsigned int)’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:353: undefined reference to `Adafruit_NeoPixel::show()’
      C:\Users\2018WE~1\AppData\Local\Temp\ccZrrGS7.ltrans0.ltrans.o: In function `setup’:
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:162: undefined reference to `RTC_DS3231::now()’
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:162: undefined reference to `DateTime::DateTime(__FlashStringHelper const*, __FlashStringHelper const*)’
      C:\Users\2018WE~1\AppData\Local\Temp\ccZrrGS7.ltrans0.ltrans.o: In function `DateTime::operator>(DateTime const&) const’:
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/RTClib.h:164: undefined reference to `DateTime::operator<(DateTime const&) const'
      C:\Users\2018WE~1\AppData\Local\Temp\ccZrrGS7.ltrans0.ltrans.o: In function `loop':
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:209: undefined reference to `Adafruit_NeoMatrix::Color(unsigned char, unsigned char, unsigned char)'
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:209: undefined reference to `Adafruit_NeoMatrix::fillScreen(unsigned int)'
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:243: undefined reference to `Adafruit_NeoPixel::show()'
      C:\Users\2018WE~1\AppData\Local\Temp\ccZrrGS7.ltrans0.ltrans.o: In function `Wheel':
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:277: undefined reference to `Adafruit_NeoMatrix::Color(unsigned char, unsigned char, unsigned char)'
      C:\Users\2018WE~1\AppData\Local\Temp\ccZrrGS7.ltrans0.ltrans.o: In function `drawCircleOnMatrix':
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:260: undefined reference to `Adafruit_NeoMatrix::drawPixel(int, int, unsigned int)'
      C:\Users\2018WE~1\AppData\Local\Temp\ccZrrGS7.ltrans0.ltrans.o: In function `drawOnMatrix':
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/wordclock_german.ino:413: undefined reference to `Adafruit_NeoMatrix::drawPixel(int, int, unsigned int)'
      C:\Users\2018WE~1\AppData\Local\Temp\ccZrrGS7.ltrans0.ltrans.o: In function `__base_dtor ':
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/Adafruit_NeoMatrix.h:65: undefined reference to `vtable for Adafruit_NeoMatrix'
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/Adafruit_NeoMatrix.h:65: undefined reference to `vtable for Adafruit_NeoMatrix'
      C:\Users\2018WeidigBen\OneDrive – FSG Rüthen\Schule\Technik und Informatik\Arduino\Wordclock\wordclock_german/Adafruit_NeoMatrix.h:65: undefined reference to `Adafruit_NeoPixel::~Adafruit_NeoPixel()'
      collect2.exe: error: ld returned 1 exit status

      exit status 1

      Compilation error: exit status 1

Christian · 02/11/2023 at 21:58

Lieber Edgar,
da du anscheinend Fragen wirklich beantwortest wage ich es doch dich zu belästigen….
Aber zu allererst herzlichen Dank für deine Anleitung! Ich konnte alles bauen und um setzen – und da dein Code so extrem sauber geschrieben und kommentiert ist auch an meine Bedürfnisse anpassen (ich habe leider nur ganz rudimäntere Ahnung vom Programieren 🙁 )!
Nun habe ich aber noch einen Wunsch: Ich würde gerne die Farben bei der der Normalen Uhrzeit anzeige kontiunierlich verändern – so das die Farben langsam durch das Spektrum Cyclen. a) weil ich denke das es toll aus sieht aber auch auch b) um die LED’s gleichmässiger “abzunutzen”. Ich habe Versucht dein ColorWeehl code zu recyklen – leider nicht wirklich erfolgreich…
Hast Du mir eventl. einen Tipp?
Herzlichen Dank für all deine Benühungen und deine vielen Tipps!
Viele Grüsse
Christian
PS: Und wenn man sich irgendwo, irgendwie erkenntlichzeigen kann mache ich das _sehr_ gerne!

    Techniccontroller · 03/11/2023 at 1:02

    Hi Christian,
    danke für deinen Kommentar. Es freut mich, dass du die Uhr erfolgreich nachgebaut hast.

    Ich habe deinen dynamischen Farbwechsel in einem neuen Branch auf GitHub umgesetzt. Hier kannst du die paar wenigen Änderungen sehen:
    https://github.com/techniccontroller/think_wordclock/compare/main…dynamic_color_change

    Leider habe ich die Uhr gerade nicht zur Hand, daher kann ich den Code nicht testen, aber der dynamische Farbwechsel ist nun im Farbmodus 1 aktiv. Also wo ursprünglich die Uhr rot geleuchtet hat. So kannst du die anderen statischen Modi immer noch nutzen. Du kannst durch die verschiedenen Modi schalten, indem du die Uhr kurz hintereinander aus- und wieder einschaltest. Der dynamische Farbwechsel cyclet innerhalb etwa 60 min. einmal durch das ColorWheel.

    Viel Spaß beim Ausprobieren.
    Vielen Grüße
    Edgar

    PS: Ganz unten auf meiner Website ist ein Link zu PayPal 🙂

      Christian · 03/11/2023 at 19:49

      Thank you – it works like a charm 🙂 – And thank you for the PayPal link – worked too 🙂

      Christian · 14/11/2023 at 21:17

      Hallo Edgar,
      jetzt muss ich dich dochnochmals belästigen: Mein DCF77 Modul will nicht wirklich meistens erscheint no Signal. Eine normale DCF77 Funkuhr hat am gleichen Ort aber sehr guten Empfang. Hast Du erfahrung mit DCF Modulen – irgendwelche Tipps?

        Techniccontroller · 14/11/2023 at 21:39

        Hallo Christian,
        ja ich hatte auch einige Problem mit dem DCF77 Modul. Bei mir war die Orientierung der Antenne sehr entscheidend für den Empfang. Ich glaube ich musste die Antenne horizontal ausrichten. Also leider nicht so wie in den Bildern oben gezeigt.

        Ich hoffe das hilft dir, ich habe ja auch einen Signalstärkeanzeige in die Uhr integriert, damit man die Signalstärke beim starten der Uhr als Balken ablesen kann (1. Zeile).

        Viele Grüße
        Edgar

          Jonas · 25/11/2023 at 19:29

          Hallo Edgar,

          erstmal vielen Dank für das tolle Projekt. ich habe inzwischen 4 Uhren in Größe 60×60 gebaut, welche je Buchstabe eine LED haben. nun möchte ich mich steigern und gerne eine Uhr in 120×120 bauen. ich denke ich benötige wegen der Größe drei Led je Buchstabe. kann ich den Code einfach umschreiben, also in Bezug auf die Pixel oder müssen hierzu auch alle Datenbänke angepasst werden? evtl. gibt es hierzu auch einen einfacheren Weg?

          auch funktioniert mein dcf 77 leider nicht. habe das nun bei der Zeitumstellung festgestellt. ich denke jedoch, dass das ein Anschlussfehler ist.

          schonmal vielen Dank !!!

          Techniccontroller · 26/11/2023 at 1:28

          Hallo Jonas,
          dank für deinen Kommentar.

          Ich hatte das Thema mit mehreren LEDs für einen größere Wortuhr bereits mehrfach. Hierbei muss man darauf achten, dass der Speicher des Arduino begrenzt ist. Wenn man die Anzahl der LEDs im Code erhöht, erhöht sich auch der Speicherbedarf des Arduino. Bei Speicherüberlauf bricht das Programm ab (da es sich um Arbeitsspeicher handelt, sieht man das nicht beim Kompilieren). Wenn durch die zusätzliche Anzahl an LEDs kein Mehrwert im Code erzeugt wird, würde ich empfehlen, stattdessen zwei oder drei LED-Strips parallel anzuschließen und mit dem originalen Programm anzusteuern.

          Das funktioniert nicht wenn du 2×2 oder 3×3 LEDs für einen Buchstaben möchtest. für den Fall 2×2 hatte ich mal einen Branch auf GitHub erstellt: https://github.com/techniccontroller/think_wordclock/tree/width22leds
          Hier siehst du überschaubaren Anpassungen im Code. Auch hier werden dann zwei LED-Strips parallel angesteuert und zudem werden immer zwei LEDs hintereinander zusammen angesteuert. Da der Branch dem master-Branch etwas hinterherhängt würde ich dir in diesem Fall empfehlen nur die Änderungen in deinen aktuellen Code zu übernehmen.

          Ich hoffe das hilft dir weiter.

          Beim DCF77 hab ich ja hier in den Kommentaren bereits geschrieben, dass die Orientierung der Antenne sehr wichtig ist.

          Viele Grüße
          Edgar

Matthias · 29/10/2023 at 12:27

Hi Edgar,

I have a PI PICO left. Can I use it to replace the arduino or would this lead to a lot of changes or other drawbacks?

BR

Matthias

    Techniccontroller · 29/10/2023 at 12:57

    Hi Matthias,
    A straightforward replacement of the Arduino with a PI PICO is not possible, especially because I use a few libraries (e.g., Adafruit_NeoMatrix, TimeLib, DCF77, RTClib, EEPROM) that are not compatible with the PI PICO.

    So, if you want to use the PI PICO, you must find alternatives to those libraries or adapt them to the PI PICO. The logic for displaying the time on the matrix you can take over from my code, but this is only 50% of the total effort. So it’s up to you if you want to do this 😉 If you have good experience programming the PI PICO, it should be doable within a few hours.

    Best regards
    Edgar

André · 14/08/2023 at 15:36

Hallo Edgar

von mir auch vielen lieben Dank für das Teilen des Projektes! Ich wollte die Uhr demnächst mal für meine Eltern nachbauen, alle Teile sind schon bestellt und im Zulauf. Finde es richtig toll, dass es hier mal keine webbasierte Version ist (Uhrzeit über Zeitsserver) und sogar mit einem Helligkeitssensor gearbeitet wird. So kommen meine Eltern dann ohne Handy noch besser mit der Uhr klar.
Ich würde mich nur gerne auf eine Vorder- und eine Hintergrundfarbe beschränken. Gibt es ne Möglichkeit, dass ich das “Durchwechseln” der Farben über 2 Hardwarebuttons über einen der Eingänge des Nanos selbst steuern kann?

Grüße
André

    Techniccontroller · 14/08/2023 at 22:30

    Hallo Andre,

    danke für deinen Kommentar. Freut mich, dass du die Uhr nachbauen willst.

    Ja klar, man kann auch durch einen separaten Hardware-Taster den Farbmodus wechseln lassen.
    Ich hab mal provisorisch eine Codeversion auf einem neuen Branch auf GitHub erstellt, um zu zeigen wie das dann aussehen kann (Änderungen zum Original siehst du wenn du den letzten Commit öffnest):

    https://github.com/techniccontroller/think_wordclock/tree/colorchange_via_hardkey

    Ist nicht getestet, weil ich die Uhr gerade nicht zur Hand habe.
    Ich nutze hier nur einen Taster an Pin 7 um den Farbmodus durchzuschalten.
    Du kannst auch noch mehr Farbmodie hinterlegen, allerdings habe ich keine seperate Hintergrundfarben. Nur im Farbmodus 0 wird im Hintergrund ein Regenbogenmuster abgespielt.

    Hoffe das hilft dir weiter. Bei weiteren Fragen gerne melden.

    Vielen Grüße
    Edgar

Add a Comment

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