Hallo Forum,
habe mir eine Uhr im Stil der 1980ger gebaut die in einem Youngtimer zum Einsatz kommen soll. Sie soll mit 2 Knöpfen (Tastern) gestellt werden können.
Uhr: DS1302 Lib: RtcDS1302.h
Habe die Zeit in zwei int variablen gespeichert. Min und Std. Die Uhr auslesen und in die int variablen schreiben funktioniert. Aber wenn ich die Zeit mit den beiden buttons gestellt habe,
wie bekomme ich jetzt die Zeit in die Uhr geschrieben?
Habe die Anweisung Rtc.SetDateTime() gefunden weiss nur nicht wie ich die integer values da reinbekomme. Habe auch schon wirklich viel code gesichtet und verstehe es einfach nicht.
Bitte um Erklärung
Bestimmt wird das Stellen der Uhr in der Lib gezeigt.
Allerdings hast du dir da eine RTC ausgesucht, die recht ungenau geht.
Da darfst du öfter mal nachstellen.
Welche LIb benutzt Du (Link bitte)?
Gruß Tommy
Ich habe im Arduino menu "Werkzeuge/Bibliotheken verwalten" die Lib "Rtc by MAKUNA" runtergeladen. Dann gibts Beispiele anzusehen. Da habe ich mir das Beispiel DS1302_simple angesehen und bin aber nicht schlauer geworden.
Im Header der Library sind verschiedene Methoden deklariert, wie man aus einer Zeitangabe ein RtcDateTime
-Object erzeugen kann. Da sind die Varianten mit einzelnen Parametern für Jahr, Tag usw. (wenn Du eine bestimmte feste Zeit setzen willst) und die Variante mit dem Compile-Date und -Time vermutlich am leichtesten zu benutzen.
Im Simple-Beispiel sind die beiden entscheidenden Zeilen dann
25: RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);
(das erzeugt eine Zeit) und
36: Rtc.SetDateTime(compiled);
(das setzt dann die Uhr auf diese Zeit).
Gruß Walter
DATE und TIME sind bei mir grün dargestellt. Was sind das denn für Variablen? die muss ich ja erstmal bilden. Ich habe für Stunden und minuten globale int variablen: Std, Min. Die kann ich da ja nicht einfach einsetzen.
__DATE__
und __TIME__
sind vordefinierte Konstanten und enthalten Datum und Uhrzeit des Zeitpunkts, an dem die Datei durch den Compiler gelaufen ist.
Konstanten? Die werden doch jedesmal beim compilieren beschriben; sind es dann nicht variablen? Wie auch immer, zurück zu meiner Frage:
Ich habe zwei Variablen mit dem Inhalt Stunden und minuten. z.B.:
int Std = 17;
int Min = 32;
Wie bekomme ich das in die Uhr geschrieben?
Indem du deine schon beschriebene Anweisung dazu verwendest.
Wie sollen wir helfen, wenn du uns keinen Link der Library postest.
Wir können nicht auf deinen Rechner sehen.
Ich habe keinen Link zur Library. Habe sie aus der Entwicklungsumgebung wie schon beschrieben geladen.
Neben Stunde und Minute brauchst Du noch ein paar mehr Variablen:
Rtc.SetDateTime(jahr, monat, tag, Std, Min, sekunde);
Die musst du dir doch irgendwo runter geladen haben.
In der Original-IDE ist die nicht mit dabei.
In der Regel steht in der Datei library.properties im Lib-Verzeichnis die URL.
Gruß Tommy
Grad gesehen, dass du für den TO ja schon die Arbeit gemacht hast und den Link oben gepostet hast.
Da kann der TO ja erst mal per "GetDateTime" den aktuellen String holen und nur die Zeiten austauschen. Dann ist alles zusammen. Mit ner richtigen RTC wäre das auch einfacher.
Ah, jetzt habe ich es verstanden:
RtcDateTime neu = RtcDateTime(2021, 05, 18, uhr_stunden, uhr_minuten, 0);
Rtc.SetDateTime(neu);
stzt die Zeit auf meine Werte.
Vielen Dank an Euch!
Ihr habt geschrieben daß die Uhr nicht so gut ist. Wie sehr geht die denn falsch? Ich habs noch nicht getestet. Und für meine Zwecke ist die eigentlich ganz gut geeignet weil sie sich im DIL Gehäuse gut per hand einlöten lässt.
Ok, wenn du die selbst als einzelnes IC + Quarz + evtl. Batterie verbauen musst.
Die Ungenauigkeit kann schon schnell mal ein paar Minuten pro Monat sein.
Die DS3231 als Modul ist da sehr genau, weil temperaturkompensiert.
Die DS1302 wie die meisten ohne temperaturkorrektur geht bis zu 20ppm falsch, das sind ca 600 Sekunden im Jahr. also um die 10 Minuten.
Die DS3231geht im Sekundenbereich pro Jahr falsch.
Grüße Uwe
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.