Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Drucken und Verdrahten…
- Schritt 2: PCB-Montage
- Schritt 3: Die Skizze
- Schritt 4: Es ist Zeit, sich zu verabschieden
Video: 7-Segment-Uhr - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
Nach mehreren Jahren Nutzung ist meine analoge Uhr definitiv tot.
In der Zwischenzeit suchte ich nach einem 3D-Uhrenprojekt zum Drucken mit meinem Prusa, also fand ich eine 7-Segment-Uhr, die von ws2812-LEDs und Arduino angetrieben wurde.
Ich dachte, dass die Macht dieser LEDs darin besteht, eine große Farbpalette anzuzeigen, dann war die Frage, wie man mehrere Farben auf einer Digitaluhr kombiniert.
Dann die Idee, die Uhr mit folgenden Funktionen zu individualisieren:
- 7 verschiedene Minutenwechselübergänge
- 3 voreingestellte Farben für Zeitfenster
- Umgebungslichtintensität automatisch dimmen
- Automatisches Herunterfahren/Starten, wenn keine Zeit angezeigt werden muss
- automatische Sommerzeitanpassung
Lieferungen
Das Projekt kann mit einem 3D-Drucker ausgeführt werden oder nach Projekten mit 7-Segment-Uhren gegoogelt werden. Jemand hat sie auch mit Pappe gemacht.
Es besteht auch Bedarf an:
- Arduino Nano
- Fotozelle
- Taster
- Ein / Aus Schalter
- DC-Stecker
- 5V Transformator
- Nr. 30 WS2812 LEDs (Modell 30 LEDs/Meter)
- Leiterplatte
- DS3231-Modul
- dünne Kabel für LED-Anschlüsse
- Widerstände 10K, 550
- Lot
- Kleber
- Jumper
- Header männlich/weiblich
Schritt 1: Drucken und Verdrahten…
Das ursprüngliche Projekt auf Thingverse wurde ein wenig modifiziert. (Danke an Benutzer random1101)
Die beiden Punkte wurden vergrößert, um die für dieses Projekt verwendete LED-Version zu passen. Eine der drei rückseitigen Abdeckungen wurde ebenfalls modifiziert, um auf die Leiterplatte zu passen. Geändert auch Taktbasis.
Hauptarbeit ist das Löten von LEDs. Zuerst habe ich LEDs außerhalb der 3D-Druckziffernrückseite gelötet und dann hineingesteckt.
Die 7. Led der ersten Ziffer von links beginnend wird mit der ersten Led der nächsten Ziffer verbunden. Am Ende der 4. Stelle verbinden Sie die beiden Punkt-LEDs, sie werden in der Sequenz mit 28 und 29 nummeriert.
Die LED-Sequenz kann wie folgt geändert werden, indem einige Parameter in die Arduino-Bibliothek geändert werden.
Sobald die Verbindung hergestellt ist, ist die meiste Arbeit erledigt.
Schritt 2: PCB-Montage
Jetzt ist es an der Zeit, eine Leiterplatte zusammenzubauen, auf der einige Widerstände, Header usw. gelötet werden. Die Komponenten zum Anschließen von Arduino sind:
Taster zwischen Arduino Pin 3 und GND mit internem Pull-Up-Widerstand angeschlossen.
Lichtsensor als Spannungsteiler zwischen Arduino Pin A7 und GND angeschlossen. Fügen Sie auch einen 10K-Widerstand zwischen A7 und +5V hinzu ………GROßER FEHLER
Lichtsensor zwischen +5V und A7 Pin und 10K Widerstand zwischen A/ Pin und GND
DS3231-Modul über i2c und SQW-Pin mit Arduino-Interrupt-Pin 2 verbunden
Leds an Pin 5 über 550Ohm Widerstand angeschlossen.
Schritt 3: Die Skizze
Es gibt viele Anpassungen, die innerhalb der Skizze vorgenommen werden können.
Das Speichern der Sommerzeitbibliothek wird durch die Parameter TimeChangeRule gehandhabt, siehe JChristensen-Bibliothek auf Github für weitere Informationen.
Das automatische Herunterfahren innerhalb der Schleife wird durch die Variable int gotosleep gehandhabt. In meinem Fall geht Arduino um 0:00 in den Schlafmodus, dann schaltet sich die Uhr aus.
Wenn Sie ALARM auf dem DS3231-Modul über die Variable int gotosleep einstellen, kann Arduino aus dem Schlafmodus aufwachen. In meinem Fall um 7:00 Uhr morgens.
Eine weitere Funktion ist das Ändern der Uhrfarbe während des Tages in der Funktion:
void printDateTime(time_t t, const char *tz)
In meinen Einstellungen von 0:00 bis 12:00 Uhr wird die Uhrzeit rot angezeigt, von 12:00 bis 17:00 Uhr grün und von 17:00 bis 0:00 Uhr meist blau. Dies ist der bisher beste Farbausgleich für einen guten Kontrast zur weißen Wand dahinter.
Die Übergangsfunktion ermöglicht einen animierten Farbübergang, wenn sich die Minute ändert. Es gibt 6 verschiedene, die durch Drücken der momentanen Taste ausgewählt werden können, die 7. Option ist ohne Übergänge. Diejenige, die mir gefällt, heißt newrandom(), die voreingestellt ist (int mode = 1;).
Ich habe einige Änderungen an der Bibliothek vorgenommen, um die Kompatibilität mit der LED-Sequenz zu gewährleisten. In der Datei segment_display.cpp, am Ende, Schalter (i) können Sie Ihre LED-Sequenz ändern. Sobald Sie fertig sind, ersetzen Sie die Datei im Inneren
/Arduino/libraries/7segment_NeoPixel-master
Erforderliche Bibliotheken:
- avr.schlaf
- segment_display
- DS3231
- ZeitLib
- Kabel
- Adafruit NeoPixel
- Zeitzone
Schritt 4: Es ist Zeit, sich zu verabschieden
Ich mag diese Uhr, die aktuelle Uhrzeit ist von weitem gut sichtbar und sie schaltet sich aus, wenn ich sie nicht brauche.
Wie könnte man mehr von einer Uhr verlangen?