Und Noch Eine Wordclock

65,347

72

57

Introduction: Und Noch Eine Wordclock

Hallo Leute,

ich will hier heute mal eine erneute Kopie einer Wordclock vorstellen. Mir hatte diese Uhr schon beim aller ersten Anblick das Nerdige "Will-Ich-Haben"-Gefühl geweckt.

Das schöne an dieser Uhr ist sie stellt die Zeit in Worten dar also "Es ist viertel nach sieben".

Diese Uhr ist immer ein netter Blickfang im Wohnzimmer und führt immer wieder zu erstaunten Gesichtern bei den Gästen und man kann diese Uhr "richtig" lesen.

So habe ich vor zwei Jahren miene erste Wordclock gebaut mit einem leider nur mäßig zufriedenstellendem Ergebnis. Die LEDs waren einfach zu dunkel durch das Multiplexing das mit Hilfe von zwei Multiplextreibern (MAX7221) geschah. Also musste eine neue Idee her.

Da die WS2812B LEDs immer billiger wurden, war dadurch dieses neue Projekt geboren.

Die Uhr sollte nachher "Berührungslos" eingestellt werden können deswegen sind hinter der Frontplatte Reedkontakte die man mit Hilfe eines Magneten ausgelöst werden und dadurch kann die Uhr gestellt werden bzw der Modus geändert werden.

Da ich aus der Automatisierungsbranche komme bin auch ein Fan des keep it clear as possible. Deswegen habe ich mit auch zu einem minimalistischen Bedienkonzept entschieden.

Alles wird auf einem Arduino Nano (wahlweise auch einem Pro Mini und ein ISP -Programmer) mit der Arduino IDE realisiert.

Die Acrylplatte auf den Fotos sieht im Moment noch nicht so schön aus, da sich noch die Schutzfolie auf der Oberseite befindet. Diese wird erst entfernt wenn die Uhr sich vor Ort befindet um die Front zu schützen.

Step 1: Materialliste

  • 1*Arduino Nano oder kompatibel
  • 1*DS3231 RTC Modul zum beibehalten der Zeit
  • 1* Acryl Wordclock Frontplatte von mikrocontroller.net (füher gab es die Platte hier zu kaufen *)
  • 114* WS2812B auf 10mm-Platine
  • 4* Reed Kontakte zum Stellen bzw. Modus ändern der Uhr
  • 1* MDF Zwischenplatte nach verändert bzw. angepassten Maße laut dem o.g. Artikel
  • div Lochstreifen
  • geregeltes 5V Netzteil mit 3A

Die Gesamtkosten für die Uhr belaufen sich auf 70-80 €

Edit:
(* Nach einer Unterlassungserklärung kann man dort "nur" noch die CAD bzw Plotterdateien bekommen)

Step 2: Grundplatte

Die Grundplatte wurde gefräst nach Anpassungen der Maße von dem "originalen" Vorgaben plus 4 Taschen zum verstauen der Elektronik und zusätzlichen Kanälen zum verkabeln. Auf der Frontseite befindet sich noch ein zusätzlicher Kanal zu verstauen der Reedkontakte

An den Rückseite sind Aussparungen zum Einsetzten der LEDs. Dort werden alle 114 LEDs platziert und dann mit etwas Uhu fixiert. Danach kommt die Fleißarbeit alle LEDs müssen verdrahtet werden nach dem Prinzip. Erste Reihe von Links nach Rechts dann weiter zweite Reihe von Rechts nach Links durch alle 10 Reihen und am Ende werden die 4 Ecken verkabelt. Die Stromversorgung der Reihen werden an jeder Seite "Anfang" und "Ende" aller Reihen Parallel geschaltet da pro LED bis 60mA fließen können d.h. 660mA für jeder Reihe.

Der absolut maximale Strom wäre rein rechnerisch 6,8A bei allen LEDs an und Volle Werte bei R,G,B. Im Normalbetrieb kommt man nicht über 2-2,1A. Selbst ein Feuereffekt (Fire2012 aus der Examples der Lib) kommt man auf 3,5A-4A

Step 3: Zusamenbauen Und Programmieren

Nach dem zusammenbauen kommt das Programmieren.

Die Library die hierfür Notwendig findet man hier: Klick

Die anderen Libraries sind Bestandteil der Arduino IDE also braucht man nix zusätzliches

Die Uhr kann wie auf dem ersten Bild Links in die verschiedenen Modi geschaltet werden nach folgendem Ablauf

  • Mode 1: Stunden stellen (die linken Eck-LEDs leuchten)
  • Mode 2: Minuten stellen (die rechten Eck-LEDs leuchten)
  • Mode 3: Farbe einstellen Farbe ROT
  • Mode 4: Farbe einstellen Farbe GRÜN
  • Mode 5: Farbe einstellen Farbe BLAU

Die Farbe kann selbst bestimmt werden bei dem Farbe einstellen.

In dem Farbmodus werden die obersten beiden Reihen genutzt um den aktuelle Höhe des einstellbaren Farbwertes einzustellen. Es sind pro Farbe (Rot,Grün,Blau) 22 Stufen die man einstellen kann. Die unteren beiden Reihen zeigen das Ergebnis der Summe der drei Farben, also das Endgültige Ergebnis mit der die Wörter nachher angezeigt werden. Die Werte sind im EEPROM gespeichert also die Farbe bleibt nach Stromausfall etc. erhalten genauso wie die Uhrzeit die im DS3231 gespeichert wird und weiter läuft.

Noch offen:

  1. eine Adaptive Helligkeitsregelung mittels LDR
  2. "Wlan" Anschluss via ESP8266 mit der NTP Firmware zur echten Funk Uhr

Bei Fragen ich bin auch unter dem Usernamen im arduino.cc Forum zu finden.

! Achtung bei der ersten Inbetriebnahme sind im EEPROM die Werte 0 für die drei Farben gespeichert was zu einer "dunklen" Uhr führt.

Vor dem ersten Laden einfach einen leeren Sketch und in die ersten drei Adressen Werte 22 schreiben und zwar so:

#include <EEPROM.h> 
void setup() {
    EEPROM.write(0, 22);
    EEPROM.write(1, 22);
    EEPROM.write(2, 22);
    }
 
 void loop(){
 }

Diesen Sketch einmal Hochladen. Dann stehen die Werte im EEPROM. Jetzt kann der Uhrensketch hochgeladen werden.

Update:

Ich habe eine Automatik eingebaut die das EEPROM tested und die passenden Werten speichert

Viel Spaß

4 People Made This Project!

Recommendations

  • Organization Contest

    Organization Contest
  • Halloween Contest

    Halloween Contest
  • Plastic Challenge

    Plastic Challenge

57 Comments

0
UlrichR
UlrichR

Question 6 weeks ago on Introduction

Hi ich wollte mir ebenfalls eine Uhr bauen. Aber beim Sketch komme ich nicht weiter.
Ich hebe den Fehler 'TimeRead' was not declared in this scope. Was meiner Meinung nach an der fehlenden Libary avr/wdt.h liegt. Die ich nirgens wo finden kann irgendwelche Tipps oder Ideen würde mich echt freuen hab die Sachen alle hier und zum Großteil schon verlötet.

0
UlrichR
UlrichR

Answer 6 weeks ago

Hab es hinbekommen alle Dateien in einen Ordner kopieren und die Haupt Datei öffnen.
Danke für die Anleitung und Codes

0
Muffi01
Muffi01

1 year ago

Hallo
Sehr gut beschrieben das Projekt. Da ich absolut nicht der Programierer bin habe ich ein Problem mit einer Lib. Ich bekommen den Sketch nicht geladen , stopt mit der Meldung:

qlocktwoWS2812REED:17:21: error: avr/wdt.h: No such file or directory
#include <avr/wdt.h>
compilation terminated.
exit status 1
avr/wdt.h: No such file or directory
no protocol:

0
maxi.zwinger
maxi.zwinger

Reply 6 months ago

Hallo, Ich habe gerade das gleiche Problem und wollte fragen ob du inzwischen eine Lösung gefunden hast. Bitte um Antwort brauche es dringend für mein Abschlussprojekt.
Danke
lg Max

0
Stefansexauer
Stefansexauer

Question 1 year ago

Hallo volvodani,

danke für die super Anleitung, ich hab das ganze in einem IKEA Ribba Rahmen umgesetzt, die Frontplatte hab ich mit schwarzer 3M Folie selbst gelasert und die Buchstaben nicht entfernt, so dass man nur die Outlinekonturen sieht, wenn sie beleuchtet werden, ansonsten ist die komplette Front schwarz.
Ich hab aber noch eine Frage, ob Du mir bei einer Erweiterung des Codes behilflich sein könntest.
Ich hab in der Front noch eine Nachricht versteckt, vertikal in meheren Spalten angeordnet,die ich in einem Zeitraum, sagen wir zwischen 10:00 Uhr vormittags und 22:00 Uhr Abends zu einer zufälligen Zeit anzeigen lassen möchte.
Leider bin ich was das Programmieren angeht nicht der große Held, kannst Du mir das weiterhelfen

Gruß und vielen Dank im Voraus

Stefan

YDRD5794.JPG
0
volvodani
volvodani

Answer 1 year ago

Ich wollte das Programm eignetlich nicht mehr anpacken da ich mitterweile an einer neuen Verison in Edelstahl mit einem ESP8266 und WLAN und wesentlich edlern Optik dran bin. Zwischenplatte ist gedruckt und die "LED" sind LED Streifen. Die ecken bestehen aus 3 LED die die ganze Platte einfassen.
Evtl mal im Arduino Forum nachfragen. Aber es erklärt sich im Code ja vieles selber.


Gruß
DerDani

0
Meister_der_Lampe
Meister_der_Lampe

1 year ago

Habe einen "Es ist Eins Uhr" Fehler! Die Software sollte das ja abfangen, tut es aber nicht!
Mir fehlen da jetzt die Feinheiten von C++, wo ist der Fehler?

eins.jpg
0
volvodani
volvodani

Reply 1 year ago

Das schein mit aber ein bisschen seltsam da ich ja noch eine Uhr auf der Arbeit mit genau diesem Problem habe und genau mit diesem Abschnitt gecoverd wird.
Das ist der Auschnitt aus meinem Code.
if (hhdisplay==1&&mm5er==0) H_EIN(); // Bei Voller Stunde ohne Minute "Ein" Uhr
else if (hhdisplay==1||hhdisplay==13) H_EINS(); // Normale "Stunden" Auswahl
else if (hhdisplay==2||hhdisplay==14) H_ZWEI();
else if (hhdisplay==3||hhdisplay==15) H_DREI();
else if (hhdisplay==4||hhdisplay==16) H_VIER();
else if (hhdisplay==5||hhdisplay==17) H_FUENF();
else if (hhdisplay==6||hhdisplay==18) H_SECHS();
else if (hhdisplay==7||hhdisplay==19) H_SIEBEN();
else if (hhdisplay==8||hhdisplay==20) H_ACHT();
else if (hhdisplay==9||hhdisplay==21) H_NEUN();
else if (hhdisplay==10||hhdisplay==22) H_ZEHN();
else if (hhdisplay==11||hhdisplay==23) H_ELF();
else if (hhdisplay==12||hhdisplay==24||hhdisplay==0) H_ZWOELF();
}

Gruß
DerDani

0
Meister_der_Lampe
Meister_der_Lampe

Reply 1 year ago

Hab gerade meine Uhr mit extra USB buchse gepimmt, und mal folgendes geändert:

if (hhdisplay==1&&mm5er==0) H_EIN();
zu
if ((hhdisplay==1||hhdisplay==13)&&mm5er==0) H_EIN();

jetzt ist es gut!

0
Meister_der_Lampe
Meister_der_Lampe

Reply 1 year ago

Hi, hat doch noch etwas Zeit und bin etwas tiefer in deinen Code eingestiegen, finde den wirklich schön übersichtlich.
Das covern mag klappen für 1.00 Uhr, aber ich denke nicht für 13.00 Uhr, wozu man dann ja auch "Ein Uhr" sagt:
Du subtrahierst zwar oben im setmode=0 die 12h für die Zeiten>= 13Uhr, aber dann wird hhdisplay noch mal neu mit hh belegt, deshalb kann bei der Abfrage auch wieder der Fall hhdisplay=13 vorkommen:
.
.

hhdisplay=hh;
if (mm>=25){ // ab der 25 Minuten ist es immer "vor" der nächsetn Stunde
if (hh==0||hh==12){ // bei 12 Uhr vor "Ein" Uhr
hhdisplay=1;
}
else
hhdisplay=hh+1;
}
if (hhdisplay==1&&mm5er==0) H_EIN(); // Bei Voller Stunde ohne Minute "Ein" Uhr
else if (hhdisplay==1||hhdisplay==13) H_EINS(); // Normale "Stunden" Auswahl
......
Sollte da nicht statt dessen stehen:
if ((hhdisplay==1||hhdisplay==13)&&mm5er==0) H_EIN(); // Bei Voller Stunde um 1Uhr und 13Uhr ohne Minute "Ein" Uhr

Gruß
der Markus

0
alex.loesch57
alex.loesch57

Question 1 year ago on Introduction

hallo,

cooles Projekt und auch gut beschrieben. Eine frage habe ich jedoch in welche Größe wurde das ganze dimensioniert. habe damit noch Probleme mir das ganze bildlich vorzustellen wie groß das ist.

Danke für den Aufwand und die Tolle Idee
alex

0
Meister_der_Lampe
Meister_der_Lampe

Answer 1 year ago

die Empfehlung ist der Ikea Bilderrahmen 50x50cm; Die LEDs sind typischer 33 pro m auf der Rolle, also ein Buchstabenfeld von 36 cmx 33cm;

0
Jncls
Jncls

1 year ago

Hi,

cool beschrieben und super Anleitung. Eine Frage hätte ich aber zur Stromversorgung. Auf dem Schaltplan am Nano ist schon der VIN gemeint, also die Spannungsversorgung für den Arduino, der mit der Spannungsversorgung aus dem Netzteil verbunden wird und nicht der +5V-Ausgang, oder? Die ganze Matrix über den +5V des Arduino zu versorgen, wird vermutlich aufgrund der benötigten Ampere-Zahl pro Reihe nicht gehen, oder versorgt das Netzteil nur den Arduino direkt und der dann über den +5V die LED-Streifen?

Grüße und Danke für deine Mühe!
Jonas

0
gerdyonnet
gerdyonnet

1 year ago

Super Projekt, habe gleich die Teile bestellt, habs nun zusammengebaut, bekomms aber nicht hin die EEprom Werte zu speichern, wenn ich im Uhrensketch die Werte per Hand eintrage, funktioniert es, aber kanns nicht speichern, auch wenn ich den leeren sketch mit den EEprom.write werten aufspiele, leuchtet nichts, kanns auch nicht blind speichern.
Funktioniert nur wenn ich die Werte manuell eingebe, sind halt dann nicht änderbar.
Wäre für Hilfe dankbar.

Gruß

gerdyonnet

0
pnhann
pnhann

1 year ago

Hallo, welche Maße hat die Uhr? 45cm x 45cm x 22cm wie im Orginal? Hast du eine Rückwand oder ist die Uhr hinten offen? Ich überlege LED Strips zu verwenden und suche nach einemTrägermaterial für die LEDs. Danke

0
Eulerius
Eulerius

Question 1 year ago

Hallo, woher hast Du die Frontplatte? Der Link funktioniert nicht und auf der Seite mikrocontroller.net finde ich auch nichts. Wäre sehr froh über einen Link, wo ich die Frontplatte kaufen kann! Vielen Dank

0
volvodani
volvodani

Answer 1 year ago

Hallo Eulerius,
der Link ist tot habe ich auch gemerkt. Die Platte war daher. Leider mussten sie den Verkauf einstellen. Mann findet dort die STP Dateien für Platter. Eine weitere Quelle ist mir da auch nicht bekannt.

Gruß
DerDani

0
gstark100
gstark100

Question 2 years ago on Introduction

Hallo, Danke für die Anleitung, habe alles nachgebaut und die Software läuft, jedoch habe ich eine andere Frontplatte wo die einige Buchstabe etwas anders angeordnet sind.
Wie kann ich die Zuordnung der LED's in der Software anpassen?

0
volvodani
volvodani

Answer 1 year ago

Hallo gstark100,
Entschuldigung für die späte Antwort, die Mails von instructables landen bei mir immer wieder im SPAM.
Die Wörter lassen sich im Code B_Woerter.ino ändern dort siehst du die einzelnen Auffrufe der "Namen" dor muss die LED Nummern nur angepasst werden also die grenzen für i in den for-Schleifen .

Gruß
DerDani

0
manni.total
manni.total

2 years ago

Hi,

danke für deine top Anleitung hier. Alternativ habe ich den CLT2 Bausatz von leuchtbildshop.de im Auge. Teurer aber alles dabei außer Front und da passt sogar das Originalcover. Bin mir hier eben unsicher alle Teile zu besorgen, programmieren und so. Und löten. Weis nicht genau, was ich jetzt kaufen / besorgen soll...