Inhaltsverzeichnis:
- Schritt 1: Über die Uhr
- Schritt 2: Was Sie brauchen
- Schritt 3: Verkabelung
- Schritt 4: Was das Display zeigt
- Schritt 5: Sketch-Setup
- Schritt 6: Abschließende Hinweise
- Schritt 7: Andere Links
Video: Einfache Sommerzeituhr - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:17
Geschichte
Dieses Projekt begann als Herausforderung für mich, das Programmieren (Codieren) mit dem Arduino Uno und einem einzigen 1602A-LCD-Display zu lernen. Ich wollte zuerst den Arduino an seine Grenzen der Genauigkeit bringen. Dies ist ein Projekt, um eine Uhr ohne die Verwendung eines RTC-Moduls (Real Time Clock-Modul) zu bauen und weiterhin kein delay() zu verwenden; Befehle, weil die delay(); Befehl hält den Code für eine bestimmte Zeit an. Als ich den grundlegenden Zeiterfassungscode durchgearbeitet habe, dachte ich, dass dies etwas banal sein könnte, also beschloss ich, eine Sommerzeitfunktion als neuartige Ergänzung hinzuzufügen, um die Dinge aufzupeppen und möglicherweise ein wenig mehr Interesse an diesem Projekt zu wecken. Anfangs war die Idee rein neu, aber je mehr ich damit arbeite und die physische Uhr auf meinem Schreibtisch beobachte, desto praktischer wird die Idee. Durch Hinzufügen eines RTC-Moduls und Anpassen des Codes würde diese Uhr für die kommenden Jahre und zu sehr geringen Kosten für Hersteller und die Öffentlichkeit, die eine solche Uhr kaufen, genau sein.
Sommerzeit oder (DST) gibt es seit über 100 Jahren (Google it, es hat eine ziemlich bunte Geschichte). Ich möchte nicht in die Politik einsteigen, aber es ist eine grobe und schmerzhafte Übung, die den einfachen Leuten (du und ich) das Leben nicht leicht macht. Größtenteils genießen wir die zusätzliche Stunde Tageslicht, aber die Art und Weise, wie es angewendet wird, ist brutal. Es ist Zeit für ein großes Upgrade einer sehr alten Idee.
Dieses Beispiel ist leicht zu leben und mit dem digitalen Zeitalter und den technologischen Fortschritten leicht auf alle Formen von Digitaluhren anzuwenden, könnte aber zum Untergang der Analoguhr beitragen. Anstelle eines 1-stündigen Sprungs von Standardzeit zu Sommerzeit und dann Sommerzeit zu Standardzeit basiert diese Uhr auf dem allmählichen Fortschreiten der Zeit von der Wintersonnenwende zur Sommersonnenwende und dann zurück zur Standardzeit bei der nächsten Wintersonnenwende Jahr für Jahr. Dieser Übergang findet für 180 Tage in jedem 6-Monats-Zeitraum statt, die Anpassung beträgt 20 Sekunden pro Tag für 360 Tage, wobei die verbleibenden 5 oder 6 Tage zur Länge der Sonnenwenden hinzugefügt werden. Mein Beispiel hier erhöht alle drei Tage innerhalb des 180-Tage-Zyklus 1 Minute. Am oder um den 21. Juni eines jeden Jahres geht die Uhr eine volle Stunde voraus und am oder um den 21. Dezember eines jeden Jahres ist die Uhr auf die Normalzeit zurückgegangen. Schaltjahre können leicht berücksichtigt werden, insbesondere wenn eine RTC verwendet wird. Auch die Südhalbkugel lässt sich leicht an diese Uhr anpassen, die Schiebeskala ist lediglich 6 Monate phasenverschoben zur Nordhalbkugel.
Es gibt drei Orte auf der Welt, an denen die Sommerzeit so ziemlich sein würde, es sei denn, die Äquatorregion und die Pole. Ich glaube nicht, dass sich das Tageslicht am Äquator stark ändert, ich weiß nicht, ob eines der tropischen Gebiete überhaupt DST verwendet und die Pole sind wieder eine andere Geschichte, nur "WIE" ist es überhaupt an den Polen?
Schritt 1: Über die Uhr
Die von mir erstellte Uhr basiert auf einer Standardzeit, die niemals von der international anerkannten Weltzeituhr abweicht. Diese wird in der ersten Zeile des 1602 LCD angezeigt. Die zweite Zeile ist die gleiche Zeitskala, zeigt jedoch den Versatz der Minuten von einer Sonnenwende zur nächsten. Von der Wintersonnenwende bis zur Sommersonnenwende erhöht sich der Versatz alle drei Tage um eine Minute bis auf maximal sechzig Minuten. Von der Sommersonnenwende bis zur Wintersonnenwende verringert sich der Versatz alle drei Tage um eine Minute, bis die Standardzeit und die Sommerzeit gleich sind.
Für dieses Beispiel habe ich Militärzeit (24-Stunden-Uhr) und Standardzeit (12-Stunden-Uhr) AM und PM verwendet, um den Leuten zu helfen, die nicht mit der 24-Stunden-Zeitskala vertraut sind ab setzen. Der Code kann geändert werden, um die 12-Stunden-Uhr anzuzeigen. Ich habe drei Druckknöpfe hinzugefügt, die mit den digitalen Pins 2, 3 und 4 verbunden sind, um die Zeit einzustellen. Diese Tasten erhöhen nur Sekunden, Minuten oder Stunden. Die Tasten sind optional, die Uhr funktioniert immer noch einwandfrei, wenn Sie die Tasten nicht verdrahten und den Code nicht ändern müssen. Ich würde empfehlen, zumindest eine Taste zum Einstellen der Sekunden zu verwenden und wenn keine vollständige Genauigkeit erreicht werden kann, die Uhr auf der langsamen Seite halten, die Taste stellt die Zeit 1 Sekunde pro Sekunde vor.
Wenn Sie die Uhr von der Arduino-IDE aus starten, dauert es etwa 5,5 bis 6 Sekunden, bis die Skizze geladen und gestartet ist. Wenn Sie die Skizze auf den Arduino geladen haben, schließen Sie sie an eine Wandwarze oder ein Netzteil an, es dauert etwa 2,5 bis 3 Sekunden zum Booten und Ausführen.
Wenn Sie die Uhr endlich betriebsbereit machen, sind einige manuelle Einstellungen erforderlich.
Diese Uhr verwendet weder ein RTC-Modul noch verwendet sie "delay();" Befehle.
Wenn Sie die RTC mit dem Arduino verwenden möchten, kann dieses Konzept weiterhin verwendet werden. Die RTC gibt Ihnen alle Informationen, die Sie zum Hinzufügen der EDSC-Zeit benötigen. Der Code kann bei einem RTC-Modul ganz anders sein, ich habe mich nicht damit befasst. Sie sind ziemlich auf sich allein gestellt, wenn Sie dies tun, aber es ist eine großartige Möglichkeit, Ihr Gehirn zu trainieren.
Schritt 2: Was Sie brauchen
EINKAUFSLISTE
1 Arduino Uno oder Mega2569 (die I2C-Pins sind A4 und A5 beim UNO und 20 und 21 beim 2560 Mega)
Fast jeder andere Arduino sollte funktionieren, die verwendeten Pins können unterschiedlich sein. In dieser Hinsicht funktioniert jedes Controller-Board. Sie müssen den Code für dieses Board oder diesen Hersteller neu schreiben.
1 1602 LCD-Display (Farbe nach Wahl)
Ich verwende einen I2C-Rucksack mit dem LCD, ich finde es einfacher und schneller einzurichten.
Überbrückungsdrähte
OPTIONALE ZUBEHÖR
1 mittelgroßes Brotbrett
1-3 Taster mit momentanem Kontakt
1-3 10 K Ohm Widerstände
Dieses anweisbare ist lang, also gehe ich nicht in die Montage oder den Schrank, den ich verwendet habe, um die Uhr anzuzeigen. Wenn Ihnen dieses Projekt gefällt und Sie eine dauerhafte Version erstellen möchten, gestalten Sie es nach Ihren Wünschen. Dieses Design ist perfekt für mich, weil ich alles, was ich brauchte, in meiner Junk-Box hatte und mir das Aussehen gefällt.
ANMERKUNGEN:
Um die Grubenfälle von Stromausfällen zu vermeiden, wird meine letzte Uhr von einem Solarpanel betrieben, das ich draußen habe. Das Solarpanel hält eine 12-Volt-Batterie mit einem Regler geladen, um ein Überladen zu verhindern. Dieser Akku wird über die Strombuchse neben dem USB-Port mit dem Arduino verbunden. Ich lasse den USB-Anschluss mit dem Stromnetz verbunden, um den Akkuverbrauch zu reduzieren. Beide Stromquellen können gleichzeitig verwendet werden, ohne den Arduino zu beschädigen. Eine 12-Volt-Batterie kann auf maximal 14,5 Volt aufgeladen werden, was für den Arduino zu hoch ist, daher verwende ich einen Abwärtswandler, um die Versorgungsspannung der Batterie auf einen Bereich von 9 bis 12 Volt zu reduzieren. Die 12-Volt-Batterie, die ich aufgeladen halte, hält 3 oder 4 Tage, wenn die Tage bewölkt sind. Der Regler, den ich verwende, unterbricht die Stromversorgung des Arduino, wenn die Batteriespannung auf 11 Volt abfällt. Die Batterie, die ich habe, stammt von einem Notlichtsystem für gewerbliche Gebäude, sie ist etwa ein Viertel so groß wie eine kleine Autobatterie. Wenn Sie eine Autobatterie verwenden möchten, stellen Sie sicher, dass sie in einem gut belüfteten Bereich (im Freien) aufbewahrt wird. Autobatterien geben beim Laden und Entladen Wasserstoff und Sauerstoff ab, dies ist eine explosive Kombination.
WARNUNG
HALTEN SIE DIE BATTERIE IN EINEM BRUNNEN
BELÜFTETER BEREICH, AUSSEN
Schritt 3: Verkabelung
Ich habe einen Schaltplan für alle Verbindungen in diesem Projekt bereitgestellt. Wenn Sie ein Steckbrett verwenden, benötigen Sie eine mittelgroße Platine. Die Schalter benötigen Platz, um ausgebreitet zu werden, damit die Schaltung nicht verwirrend ist.
Das 1602 LCD-Display hat der Einfachheit halber einen I2C-Rucksack. Wenn Sie SPI-Verbindungen verwenden, müssen Sie nachschlagen, wie man es verwendet, und den Code am Anfang der Skizze ändern. Ich habe die SPI-Anschlüsse noch nie verwendet, daher sind die Pins 2, 3 und 4 möglicherweise nicht für die drei Drucktasten verfügbar.
Die drei Druckknöpfe dienen zum Einstellen der Uhrzeit auf der Uhr. Sie stellen nur die Zeit vor (AHEAD). In den letzten Einstellungen halten Sie die Uhr im Code auf der langsamen Seite (ca. 1 bis 2 Sekunden pro Tag oder mehrere Tage), damit Sie die Zeit bei Bedarf vorrücken können. Jede Taste stellt die Zeit um einen Schritt pro Sekunde vor, die untere Taste 2 Sekunden pro Sekunde, die mittlere Taste 1 Minute pro Sekunde und die obere Taste 1 Stunde pro Sekunde. Ein ziemlich hohes Maß an Genauigkeit sollte machbar sein, sodass Sie es nicht sehr oft anpassen müssen.
Wenn Sie Sekunden, Minuten oder Stunden einstellen (z. B. wenn die Minuten 58, 59, 00 vorgerückt sind), wird die Stunde zur nächsten Stunde weitergeschaltet.
Diese drei Tasten sind eine Last-Minute-Ergänzung der Uhr, sie funktionieren gut, aber es kann einen besseren Weg geben. Denken Sie daran, dass, wenn Sie mit diesem Teil des Codes herumspielen, das "delay();" Befehl kann nicht verwendet werden. Ich habe diese Methode verwendet, weil ich mir keine Sorgen um Switch-Bounce und seltsame Sprünge im Zeitverlauf machen muss.
Schritt 4: Was das Display zeigt
Ich habe viele Informationen auf das LCD-Display 1602 gesetzt, die einer Erklärung bedürfen:
Zeile 1 oder Zeile null '0' beim Sprechen im Code zeigt die Standardzeit an. Auf der linken Seite steht 'STD', dies steht für 'STandarD' Zeit.
Als nächstes steht in der ersten Zeile in der Mitte Ihre lokale Standardzeit. Beginnen Sie nicht mit Sommerzeit, die Uhr zeigt dies in der zweiten Zeile an.
Diese Zeitskala ist eine 12-Stunden-Uhr, sodass auf der rechten Seite „AM“oder „PM“steht, um Morgen oder Nachmittag anzuzeigen.
Zeile 2 oder Zeile eins '1' beim Sprechen im Code zeigt die Sommerzeit an, die je nach Tag des Jahres variiert. Die 'DST' auf der linken Seite bedeutet 'Sommerzeit'
In der Mitte der zweiten Zeile steht Ihre lokale Militärzeit, die eine 24-Stunden-Uhr ist. Sie werden es zum Beispiel als „oh sechshundert Stunden“hören.
Auf der rechten Seite ist der Tag des Jahres bezogen auf die Wintersonnenwende, auf der Nordhalbkugel ist der 21. Dezember (ungefähr) der Tag Null '0' und auf der Südhalbkugel der 21. Juni (ungefähr) der Tag Null '0'.
Ich habe zwei.pdf-Dateien als Referenz beim ersten Einrichten der Uhr bereitgestellt. Wählen Sie die Datei aus, die sich auf die Hemisphäre bezieht, in der Sie leben.
Die drei Knöpfe auf der rechten Seite erhöhen die Sekunden, Minuten und Stunden von unten nach oben.
Schritt 5: Sketch-Setup
Für den ersten Start müssen mehrere Codezeilen eingerichtet werden. Einige dieser Zeilen müssen jedes Mal geändert werden, wenn Sie die Uhr trennen und die Werte der Variablen in der Skizze ändern. Wenn Sie die Uhr für die IDE starten, dauert das Laden und Starten etwa 6 Sekunden. Wenn Sie die Skizze von der IDE laden, dann die Uhr trennen und von einer Wandwarze oder einem Netzteil neu starten, wird die Skizze in etwa 2,5 Sekunden hochgefahren.
Zeile 11 LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7);
Diese Zeile adressiert das LCD-Display und stellt die richtige Adresse des I2C-Rucksacks ein. 0x27 ist die Adresse aller Rucksäcke, die ich gekauft habe. Wenn Sie die Uhr einschalten, aber keine Daten angezeigt werden, aber sie aufleuchtet, ist die Adresse auf Ihrem LCD wahrscheinlich anders. Ich werde unten einen Link für eine Beschreibung einfügen, wie Sie die Adresse Ihres LCD-Rucksacks ändern oder die Adresse finden.
Zeilen 24 int MinuteSt = 35;
Stellen Sie die Startminute für die Standarduhr ein. Stellen Sie sie normalerweise 5 Minuten vor dem Starten der Uhr ein, um die Einrichtungszeit zu berücksichtigen.
Zeilen 25 int hourSt = 18;
Stellen Sie die Stunde auf STD Zeit (24-Stunden-Uhr) beginnt in. 18:00 Uhr wäre Stunde 18.
Zeile 26 int DSTdays = 339;
Laden Sie die PDF-Datei "Easy DST Clock Time Scale" (Nord- oder Südhalbkugel), in der Sie leben, herunter und beziehen Sie sich darauf, suchen Sie das Datum und fügen Sie die Tag-Nr. in diese Zeile ein. (Linke Spalte). Beispiel (24. November ist Tag #339 auf der Nordhalbkugel und Tag #156 auf der Südhalbkugel)
Zeile 27 int DSTJahr = 2019;
Geben Sie das aktuelle Jahr ein.
Zeile 92 if ((masterTime - previousMasterTimeSt >=1000) && (microTime - previousMicroTimeSt >= 500)){
Die "vorherigeMasterTimeSt" muss mit der Anzahl der Millisekunden verglichen werden, so dass diese "1000" je nach interner Uhr des Arduino-Boards möglicherweise auf 999 geändert werden muss und dann die previousMicroTime zur Feinabstimmung der Uhr anpassen. Der interne Takt, obwohl 16MH, variiert von einer Platine zur nächsten.
Die "vorherigeMicroTimeSt" stimmt die interne Uhr fein ab, um zu helfen, eine Sekunde genau abzuzählen. Wenn die Uhr zu schnell ist, erhöhen Sie die Mikrosekunden und ist die Uhr zu langsam, verringern Sie die Mikrosekunden und senken Sie gegebenenfalls die Millisekunden auf 999 und starten Sie dann die Mikrosekunden bei etwa 999, 990 oder erhöhen Sie die Geschwindigkeit der Uhr.
Jedes Arduino-Board hat eine etwas andere Geschwindigkeit, daher ändern sich diese Zahlen mit jedem von Ihnen verwendeten Board. Ein Teil des Codes wurde noch nicht getestet, dies ist Zeile 248 für jedes Schaltjahr. In den nächsten Wochen werde ich es testen und ggf. Änderungen posten.
Schritt 6: Abschließende Hinweise
Dieses Projekt ist einfach zu bauen, aber das Konzept und die notwendigen Anpassungen im Code können eine Aufgabe sein, nehmen Sie sich Zeit und überlegen Sie es sich, die Uhr läuft nicht bis Ende 2037 ab. Ich werde meine genau im Auge behalten E-Mail für Fragen, da ich sicher bin, dass es einige geben wird. Ich bin kein literarisches Genie, daher können einige meiner Beschreibungen etwas matschig sein.
Es sind zwei.pdf-Dateien enthalten. Laden Sie die Datei für die Hemisphäre herunter, in der Sie leben. Diese Datei gibt Ihnen die notwendigen Informationen, um die Uhr genau zu starten.
Mit den in der Skizze manipulierten Informationen wäre es einfach, nicht nur die Standardzeit und DST-Zeit, sondern auch Tag und Datum auf einem 2004A-LCD anzuzeigen. Wenn Ihnen die Herausforderungen dieses Projekts gefallen, versuchen Sie, ein 2004A-LCD-Display anzuschließen, und fügen Sie dann Code hinzu, um die zusätzlichen Informationen anzuzeigen, oder wenn genügend Interesse besteht, werde ich eine andere Variante dieses Projekts einschließlich dieser zusätzlichen Informationen durchführen.
Ich habe versucht, bei diesem Projekt allumfassend zu sein, aber ich habe drei Gebiete in der Welt gefunden, die in Frage kommen. Der Nordpol, der Südpol und der Äquator.
Ist DST am Nord- oder Südpol notwendig oder überhaupt möglich?
Wie spät ist es am Nord- oder Südpol?
In welche Richtung würden Sie reisen, um den Nord- oder Südpol zu verlassen?
In welche Richtung würden Sie vom Südpol aus nach Australien, Nordamerika, Europa oder Asien reisen?
In welcher Zeitzone lebt der Weihnachtsmann?
Braucht er DST?
Wie spät ist es überhaupt am Nordpol?
In welche Richtung reist der Weihnachtsmann, um all seine Geschenke zu überbringen?
Ab welchem Breitengrad ist DST wirksam?
Nun zum Äquator;
Ist diese Uhr am Äquator verwendbar?
Würden sie die Skala der nördlichen oder südlichen Hemisphäre verwenden?
Was sind die Termine für die Wintersonnenwende und die Sommersonnenwende?
Ab welchem Breitengrad ist DST wirksam?
Brauchen die Pinguine DST?
Findest du, dass ich komisch bin, wenn ich über diese Fragen nachdenke?
Allen viel Spaß beim Bauen!
philnuss
Schritt 7: Andere Links
Dies ist ein Link zum Ermitteln oder Ändern der Adresse auf dem I2C-Rucksack:
www.instructables.com/id/1602-2004-LCD-Adapter-Adressierung/
PiotrS hat eine ausgezeichnete Anleitung für I2C-Hardwareadressen geschrieben
playground.arduino.cc/Main/I2cScanner
Dieser Link scannt Ihr I2C-Gerät und gibt die Adresse zurück
Empfohlen:
So erstellen Sie eine einfache Nintendo LABO-Zielübung – wikiHow
So erstellen Sie eine einfache Nintendo LABO-Zielübung: Meine Schwester und ich haben kürzlich einen Nintendo Switch gekauft. Natürlich haben wir auch ein paar Spiele dazu. Und einer davon war das Nintendo LABO Variety Kit. Dann bin ich schließlich über die Toy-Con-Garage gestolpert. Ich habe einiges ausprobiert und da habe ich
So erstellen Sie eine einfache Website mit Notepad – wikiHow
Wie erstelle ich eine einfache Website mit Notepad: Hat sich jemand gefragt, wie ich aus einem einfachen Schreibprogramm eine Website erstelle? Website nur mit Notizblock
So erstellen Sie Ihre erste einfache Software mit Python – wikiHow
So erstellen Sie Ihre erste einfache Software mit Python: Hallo, willkommen zu diesem Instructables. Hier werde ich erzählen, wie Sie Ihre eigene Software erstellen. Ja, wenn Sie eine Idee haben… aber wissen, wie Sie neue Dinge umsetzen können oder daran interessiert sind, Neues zu schaffen, dann ist es das Richtige für Sie
ESP-01 Programmier-Hack - der Einfache :): 6 Schritte
ESP-01 Programmierer Hack - der Einfache :): Hallo ESPer, In diesem anweisbaren zeige ich Ihnen einen einfachen Hack, um einen Programmierer für ESP-01 / ESP8266-01 / ES-01-Modul zu machen. Die meisten von uns haben ein Arduino-Board oder FTDI USB-TTL-Geräte als Programmierer für dieses Modul verwendet. Beide Methoden funktionieren gut. Aber t
Eine einfache Wetterstation erstellen – wikiHow
So erstellen Sie eine einfache Wetterstation: Hallo Leute, in diesem Video zeige ich Ihnen, wie Sie eine einfache Wetterstation erstellen, um Temperatur und Luftfeuchtigkeit mit dem DHT11-Sensor zu messen