Wie die Zeit für Ihre Arduino Clock Projekt anzeigen

Sobald Sie etwas auf dem Display für die Arduino Clock Projekt haben, ist es Zeit, die Zeit von der RTC-Modul zu lesen und anzeigen. Später fügen Sie Tasten, um den Alarm zu programmieren und einen Schalter zwischen Zeitanzeige, Alarm-Set und Alarm Bewaffnete den Modus zu ändern.

Es gibt eigentlich nur zwei Dinge, die Sie mit dieser Uhr anzeigen kann: entweder die aktuelle Zeit oder die Zeit der Alarm wollen weg zu gehen. Anstatt den Code für die sowohl in dem Haupt Schleife(), macht es Sinn, die Anzeigeverfahren in seine eigene Funktion zu setzen.

Fügen Sie den folgenden Code in die Variablendeklarationen Abschnitt am Anfang des Codes:

RTC_DS1307 rtc- // eine Echtzeituhr erstellen rtcLiquidCrystal LCD genannt (12, 11, 5, 4, 3, 2) - // Neues LCD genannt lcdDateTime Now-

Dadurch entsteht ein Datetime-Objekt aufgerufen jetzt. Das Datetime-Objekt ist Teil der RTC-Bibliothek und ist der einzige Weg, um die Zeit aus dem RTC-Modul zu bekommen, obwohl es eine Menge von Optionen und kann Stunden, Minuten, Sekunden und das Jahr, den Monat und Tag.

Als nächstes den Code in Ihre Hauptschleife hinzufügen, die die aktuelle Zeit aus dem RTC-Modul liest, und eine Funktion hinzufügen, um die Anzeige mit der aktuellen Uhrzeit zu aktualisieren:

Leere Schleife () {now = rtc.now () - // die aktuelle Uhrzeit Get // Die displayupdateDisplay Refresh () -}

Das jetzt Datetime-Objekt speichert die aktuelle Zeit von der genommen rtc.now () Funktion, um die Zeit anzuzeigen und zu überprüfen, ob es Zeit ist, den Alarm auszulösen.

Um den Code modular zu halten, die Anzeige aktualisiert wird in einer eigenen Funktion getan, außerhalb der Hauptschleife. Nachdem die Hauptschleife zu schließen, fügen Sie die anzeigeAktualisieren () Funktion durch den folgenden Code eingeben:

nichtig anzeigeAktualisieren () {int h = now.hour () - // die Stunden jetzt holen und speichern sie in einer ganzen Zahl genannt Hinweis m = now.minute () - // die Minuten Erhalten Sie jetzt und speichern sie in einer ganzen Zahl genannt Minze s = now.second () - // die Sekunden jetzt holen und speichern sie in einer ganzen Zahl genannt slcd.setCursor (0, 0) - // den Cursor auf die Spalte Null, obere Reihe ... lcd. print ( "die Zeit ist:") - // ... mit Leerzeichen Zeichen zu löschen von der Einstellung alarm.lcd.setCursor (4, 1) - den Cursor zur Spalte vier Verschieben // untere rowif (hlt; 10) { // eine Null hinzufügen, falls erforderlich, als abovelcd.print (0) -} lcd.print (h) - // die aktuelle hourlcd.setCursor Anzeige (6, 1) - // auf die nächste columnlcd.print verschieben ( " : ") - // Und die colonlcd.setCursor (7, 1) drucken - // auf die nächste columnif (MLT bewegen; 10) {// eine Null hinzufügen, falls erforderlich, als abovelcd.print (0) -} lcd .print (m) - // Anzeige der aktuellen minutelcd.setCursor (9, 1) - // auf die nächste columnlcd.print Bewegen ( ":") - // Und das colonlcd.setCursor drucken (10, 1) - / / zur nächsten columnif (SLT, 10) {// eine Null hinzufügen, falls erforderlich, als abovelcd.print (0) -} lcd.print (en) - // die aktuelle zweite Anzeige}

Schicken Sie diesen Code auf Ihre Arduino und sehen, was passiert. Wenn alles gut geht und Ihr Code kompiliert korrekt, sollten Sie im Geschäft! Das Display sollte eine Zeit zeigen, die mit der auf Ihrem Computer übereinstimmt.

Im Code wird die aktuelle Zeit von der angeforderten jetzt Objekt und in drei Integer-Variablen verwendet nur in der platziert anzeigeAktualisieren Funktion. Diese Variablen haben eine lokalen Bereich, Das heißt, sie können nur innerhalb verwendet werden anzeigeAktualisieren (), und der Rest des Programms weiß nichts über sie - was erklärt, warum sie nicht am Anfang des Codes erklärt.

Sie fordern Zeit in Minuten, Stunden und Sekunden getrennt mit now.hours (), now.minutes (), und now.seconds (). Zuordnen jedes von diesen getrennt zu seiner eigenen ganzzahlige Variable (h, m und s) ist viel einfacher als die aktuelle Zeit auf einmal anfordern.

die Zeit, in drei Variablen analysiert haben, geht die Hauptsache auf in anzeigeAktualisieren () den Cursor positioniert auf dem LCD und Drucken des entsprechenden Text. Positionieren des Cursors geschieht mit lcd.setCursor (), die zwei Parameter: Spaltennummer und die Zeilennummer. den Cursor Einstellung legt nur sie in die richtige Position.

Sie haben dann die Anzeige zu sagen, was zu drucken. Die Nummerierung beginnt bei Null, so dass die oberen Zeichen ganz links in der Spalte 0 und Zeile 0. Der Cursor an der oberen linken Ecke des Bildschirms und der ersten Textzeile positioniert ist, gedruckt mit lcd.print (# 147-Es ist: # 148-).

Sie könnten die Verwendung lcd.clear () Funktion, die den gesamten Text auf dem gesamten Bildschirm löscht. Allerdings ist Ihre Uhr erfrischende ständig die Anzeige, so das Löschen des LCD jedes Mal die anzeigeAktualisieren () Funktion ausführt, kann nur ein wenig auffälliges Flackern einzuführen. Ein einfacher Ansatz (die man weniger Befehl verwendet) ist nur die Leerzeichen über zu schreiben, was bereits auf dem Display haben könnte.

Als nächstes wird der Cursor vier Stellen nach rechts und in der zweiten Reihe verschoben, so daß die Zeit auf dem Bildschirm zentriert wird:

lcd.setCursor (4,1) -

Ein kniffliger wenig über ganze Zahlen mit den Stunden zu erhalten, Minuten und Sekunden, ist, dass sie keine führende Null für Werte unter 10 haben Sie müssen diese manuell hinzufügen in, sowohl die Uhr richtig aussehen zu lassen (zum Beispiel 01 : 05) und die Stunden, Minuten und Sekunden an der gleichen Stelle auf dem Bildschirm zu halten.

Das Hinzufügen der führenden Nullen wird auf die gleiche Weise durchgeführt für Stunden, Minuten und Sekunden:

if (hlt; 10) {// eine Null hinzufügen, falls erforderlich, als abovelcd.print (0) -} lcd.print (h) - // die aktuelle Stunde anzeigen

Die bedingte ob Anweisung prüft, ob die aktuelle Zeit kleiner als 10 ist, und wenn ja, die drucken() Anweisung druckt eine Null. Danach schreitet der LCD automatisch in die nächste Spalte Position, so dass, wenn Sie die aktuelle Stunde zu drucken, in der Integer-Variablen gespeichert h, es wird eine führende Null haben. Das gleiche gilt für Minuten und Sekunden.

Sie müssen auch den Cursor an die richtige Position für die führende Null für Minuten und Sekunden voraus. Sie fügen einen Doppelpunkt zwischen ihnen mit der lcd.print (# 147 - # 148 -) - Erklärung.

Menü