Ich hab zwar in dem Beispiel der Lib ein Beispiel wo man mittels
tmElements_t tm;
RTC.write(tm);
die Zeit setzt, aber das funktioniert ja nur wenn der Arduino am PC hängt und dort die aktuelle Zeit herbekommt?
Wie kann ich dem tmElements_t -Objekt eine vorgebene Zeit Sekunden/minuten/std/Tag/Monat/Jahr
zu weisen. Um die Uhrzeit mittels Knopfen selber einzustellen?
bzw. gäbs noch static bool set(time_t t);
also kann man scheinbar auch ein time_t erzeugen. wo da der Unterschied.
tmElements_t ist ein struct das in der Time Library definiert ist (ich nehme an davon reden wird):
typedef struct {
uint8_t Second;
uint8_t Minute;
uint8_t Hour;
uint8_t Wday; // day of week, sunday is day 1
uint8_t Day;
uint8_t Month;
uint8_t Year; // offset from 1970;
} tmElements_t, TimeElements, *tmElementsPtr_t;
Das kannst du daher wie jedes andere struct auch ändern. z.B. tm.Minute = 30
Beim Jahr musst du aufpassen dass das die Jahre seit 1970 sind. Dazu gibt es in der Time Library auch Makros für die Umrechnung:
#define tmYearToCalendar(Y) ((Y) + 1970) // full four digit year
#define CalendarYrToTm(Y) ((Y) - 1970)
Das ist menschenlesbar, deshalb gut für die Eingabe geeignet. time_t ist die Unix-Zeit, d.h. Sekunden seit 1970. Damit kann der Computer gut was anfangen, aber man selbst weniger. Mit maketime() und breaktime() kann man die ineinander umwandeln.
Die Zeit mit einem time_t zu stellen ist z.B. sinnvoll wenn du die Unix-Zeit aus dem Internet holst und damit die RTC stellen willst.
Dann macht ja ggf. Sinn time_t zu verwenden, um einfacher ne bestimmte Sekundenanzhal zur Zeit zu addieren und die dann wieder zu setzen?
Hab bei ner Suche adjustTime(long)
fügt das was hinzu?
Genau. Subtrahieren ist da auch möglich, da mit einen Vorzeichen-behafteten Wert übergibt. Das ändert aber nur die lokale Zeit der Time Library. Nicht der RTC!
Ob man time_t oder das tm struct verwendet hängt davon ab was man machen will. Die haben beide ihren Zweck, je nach Situation.
Hallo Zusammen
Ich sende vom Pc zum Arduino folgenen String Serial
uhrstellen;01;11 2015;19:18:22
Zerlege ihn am Arduino und sende ihn dann zum DS3132
RTC.adjust(DateTime(Datum , Zeit ));
bye juergen
ja ich habe vor per "Taster" die Zeit einzustellen. Knopf drücken und dann entweder Sekunden, Minuten, .... um eins vorzustellen.
könnte also adjusttime-Funktion nutzen und dann die Arduino-Zeit wieder in den RTC schreiben 
Hallo Zusammen
Hallo Paddy65305
Ich weis nicht ob in allen Libs RTC.adjust(DateTime(Datum , Zeit ));
vorhanden ist
Ich benutze RTClib
Datum und Zeit kann man ueber einen Char-String setzen
bye juergen
Das adjustTime() was er meint kommt von der Time Library:
http://www.pjrc.com/teensy/td_libs_Time.html
Die zählt die Zeit lokal und synchronisiert sich ab und zu mit einer Zeitquelle