Inhaltsverzeichnis:

Ruhestandsuhr / Count Up / Dn-Uhr - Gunook
Ruhestandsuhr / Count Up / Dn-Uhr - Gunook

Video: Ruhestandsuhr / Count Up / Dn-Uhr - Gunook

Video: Ruhestandsuhr / Count Up / Dn-Uhr - Gunook
Video: Я есть. Ты есть. Он есть_Рассказ_Слушать 2024, November
Anonim
Ruhestandsuhr / Count Up/Dn Clock
Ruhestandsuhr / Count Up/Dn Clock

Ich hatte ein paar dieser 8x8 LED-Punktmatrix-Displays in der Schublade und überlegte, was ich damit machen sollte. Inspiriert von anderen instructables, hatte ich die Idee, eine Countdown- / Up-Anzeige zu bauen, um auf ein zukünftiges Datum / eine zukünftige Uhrzeit herunterzuzählen, und wenn die Zielzeit verstrichen ist, zählen Sie von ihr hoch. Ich habe das jetzt zu meiner Ruhestandsuhr gemacht, die auf dem Regal sitzt.

Die Idee, es in eine Flasche zu packen, war eher ein Zufall, als man über eine Hülle nachdachte. Andere stecken Schiffe in eine Flasche, warum nicht eine Uhr?

Ich wollte auch, dass die Uhr Sommerzeit hat und sich natürlich die Einstellungen und die Uhrzeit beim Ausstecken merken. Ich versorge die Uhr über USB mit Strom, wodurch sie umprogrammiert werden kann, wenn Sie etwas anderes tun oder dem Code einfach Funktionen hinzufügen möchten. Der Code ist ziemlich einfach und könnte auch viel Optimierung gebrauchen. Ich muss zugeben, dass ich nicht auf den RAM-Verbrauch geachtet habe. Wenn ich Zeit und Motivation habe, werde ich darauf zurückkommen.

Lieferungen

1. Arduino Nano

2. RTC (ich habe den gemeinsamen DS3231 verwendet, der auch ein EEPROM hat)

3. 12x 8x8 Punktmatrixmodul. (Ich hatte die Quad-Module, die einfacher aneinanderzureihen sind)

4. LDR zum Anpassen der Displayhelligkeit

5. Widerstand 10 kOhm

6. Kondensator 5x 100 uF unterdrückt Spitzen aus dem Display

7. Um den Kontrast der 8x8 Module zu erhöhen, habe ich die dunkel getönte "Window Film" verwendet. Das Display zeigt die LEDs als weiße Punkte an, wenn sie nicht leuchten. Die Fensterfolie verleiht ihm einen glänzenden schwarzen Look.

Schritt 1: Verbinden Sie die Komponenten

Verbinden Sie die Komponenten
Verbinden Sie die Komponenten
Verbinden Sie die Komponenten
Verbinden Sie die Komponenten

Ich habe drei der Quad-Displays verwendet, um das Display zusammenzubauen. Um ein Datum mit Schrägstrichen und eine Uhrzeit mit Doppelpunkten anzuzeigen, benötigen wir Platz für 8 Zeichen. Mit der typischen 5x7-Schriftart würden wir sechs 8x8-Blöcke pro Zeile benötigen. Ich schneide einen der Quad-Blöcke in zwei Hälften und ordnete diese als zwei Reihen mal sechs Blöcke an, wie im Steckbrett-Schema gezeigt.

Schritt 2: 3D-gedruckte Teile

3D-gedruckte Teile
3D-gedruckte Teile
3D-gedruckte Teile
3D-gedruckte Teile
3D-gedruckte Teile
3D-gedruckte Teile

Um die beiden Reihen des Displays zu halten und in der Flasche zu positionieren, habe ich runde Distanzringe für den Displayrahmen gedruckt. Ich habe die Dateien, die ich unten verwendet habe, hinzugefügt. Um diese ohne Unterstützung drucken zu können, sind sie in Teile aufgeteilt. Der Screenshot zeigt die beiden auf den Displayrahmen geklebten Ringe. Die Flaschenhalsabdeckung beherbergt die drei Tasten zum Umschalten zwischen den Anzeigemodi und zum Einstellen der aktuellen Uhrzeit und der Zielzeit. Die Flaschenhalsabdeckung habe ich in TPU gedruckt, so dass das USB-Kabel in die Abdeckung geschoben werden kann, ohne die Anschlüsse abzuschneiden und mit ein paar Drahtwindungen festzubinden. Ich habe vergessen zu erwähnen, dass ich eine 1,5-Liter-Weinflasche verwendet habe, die ich ganz unten aufgeschnitten habe. Alle zu bedruckenden Teile passen auf ein 20x20 cm (8x8 in) Druckerbett.

Schritt 3: Der Code

Der Arduino-Code verwendet einige häufig verwendete Bibliotheken.

MD_MAX72xx

SPI

Kabel

RTClib

Zeitzone

ZeitLib

Es gibt einige Zeilen in der INO-Datei, die möglicherweise geändert werden müssen:

Zeile 38: #define HARDWARE_TYPE MD_MAX72XX::FC16_HW <-- abhängig vom 8x8 Modul und dessen Ausrichtung

anstelle von FC16_HW könnte es einer der folgenden sein:

- MD_MAX72XX::PAROLA_HW

- MD_MAX72XX::GENERIC_HW

- MD_MAX72XX::ICSTATION_HW

- MD_MAX72XX::FC16_HW

Der Code verwendet die Einstellungen für die US-Zentralzeit und muss für andere Zeitzonen angepasst werden:

Zeile 53/54:

TimeChangeRule myDST = {"CDT", Second, Sun, Mar, 2, -300}; // Sommerzeit UTC-5TimeChangeRule mySTD = {"CST", First, Sun, Nov, 2, -360}; // Standardzeit UTC -6

Dies ist einfach einzustellen. Der Name CST/CDT dient nur als Referenz. Ich zeige die Drei-Buchstaben-Abkürzung nicht an, also spielt es keine Rolle. Die nächsten Parameter beziehen sich darauf, an welchem Tag im Monat der Wechsel stattfindet. Die Anpassung erfolgt in Minuten, daher funktionieren auch Standorte mit Anpassungen von +/- 30 Minuten.

Die RTC läuft intern auf UTC-Zeit, so dass die Zeitzonenbibliothek wie vorgesehen funktioniert. Sie fragen sich vielleicht, warum der Code im Gegensatz zu dem von mir verwendeten Taktchip auf den älteren DS1307-Chip verweist, aber das spielt keine Rolle. Die Bibliothek funktioniert mit beiden Chips einwandfrei. Der DS1307 hat die Tendenz, stärker abzudriften als der DS3132. die DS3132 ist die bevorzugte Uhr. Für diejenigen, die Internetzeit hinzufügen möchten, wird ein ESP8266 die Arbeit ziemlich einfach erledigen. Dies könnte die RTC obsolet machen. Wenn Sie diese Änderungen vornehmen, verwenden Sie das Arduino EEPROM, um die Zielzeit zu speichern, ich habe dazu das RTC EEPROM verwendet.

Schritt 4: Betrieb und Einstellungen

Bedienung und Einstellungen
Bedienung und Einstellungen
Bedienung und Einstellungen
Bedienung und Einstellungen
Bedienung und Einstellungen
Bedienung und Einstellungen

Es gibt drei Tasten

1. Menü / Einstellungen

2. Nach oben

3. Unten

Die Menütaste ermöglicht das Durchlaufen der drei Anzeigearten: Aktuelle Uhrzeit, Zielzeit, Deltazeit. Die Delta-Zeit zeigt die Anzahl der Tage HH/MM/SS zwischen der aktuellen Zeit und der Zielzeit an. Es zeigt t- an und zählt rückwärts, wenn das Ziel in der Zukunft liegt, oder t+ und zählt aufwärts, wenn das Ziel in der Vergangenheit liegt.

Um die aktuelle Uhrzeit oder die Zielzeit anzupassen, wählen Sie die aktuelle Uhrzeit oder die Zielzeitanzeige. Um die Uhrzeit zu ändern, halten Sie die Menütaste 2 Sekunden lang gedrückt und lassen Sie sie los, um in den Einstellmodus zu gelangen. Das benachbarte "/" oder ":" wird zu "", um anzuzeigen, welche Ziffer Sie anpassen. Verwenden Sie die Auf-/Ab-Tasten, um die einzelnen hh/mm/ss und mm/dd/yy anzupassen. Ich habe keine Einstellung hinzugefügt, um zwischen mm/dd/yy und dd/mm/yy zu wechseln, dies muss im Code geändert werden oder vielleicht ist jemand bereit, diese Funktion hinzuzufügen.

Sie werden feststellen, dass sich die Stundenanzeige ebenfalls anpasst, wenn Sie die Minuten über 59 oder unter 00 stellen. das gleiche gilt für Sekunden, Stunden und Tage, die den nächsthöheren Wert ändern, wenn diese Ziffer unter 0 oder über dem Maximum überschritten wird. Ich habe dies getan, um zu vermeiden, die verschiedenen Grenzen einzelner Monate zu programmieren und wenn der Februar 29 Tage in einem Schaltjahr benötigt. Die Zeiteinstellung erfolgt tatsächlich in Epochenzeit, Sekunden seit dem 1. Januar 1970.

Ich habe ein einfaches Video hinzugefügt, um das Zählen zu zeigen. Ich wollte diese wie ein Drehrad-Display machen. Wenn Sie die Änderungsdauer anpassen möchten, bietet Ihnen die Zeile 69 im INO einige Optionen, um die Änderung zu beschleunigen oder zu verlangsamen. 120 ms würden die Ziffern langsam genug scrollen lassen, da es sich um ein kontinuierlich laufendes Rad handeln würde.

Ich hoffe, Sie haben dieses instructable genossen.

Patrick Geschwindner