RTC mit Sommerzeit
hi!
habe das netz schon auf den kopf gestellt, aber leider nicht das richtige gefunden, oder einfach nach dem falschen gesucht.
also - ich suche einen code, den ich in meinen sketch einfügen kann, damit ich die uhrzeit vom ds1307 rtc-modul auch bei sommer/winterzeit korrekt angezeigt bekomme.
im moment klappt das mit der sommerzeit nicht.
habe die uhrzeit mit dem pc gestellt. obwohl mein pc gerade 20:24 anzeigt, zeigt das display vom arduino 19:26 an?
gestellt habe ich hiermit:
kann da jemand helfen?
gruß
morris
habe das netz schon auf den kopf gestellt, aber leider nicht das richtige gefunden, oder einfach nach dem falschen gesucht.
also - ich suche einen code, den ich in meinen sketch einfügen kann, damit ich die uhrzeit vom ds1307 rtc-modul auch bei sommer/winterzeit korrekt angezeigt bekomme.
im moment klappt das mit der sommerzeit nicht.
habe die uhrzeit mit dem pc gestellt. obwohl mein pc gerade 20:24 anzeigt, zeigt das display vom arduino 19:26 an?
gestellt habe ich hiermit:
code: [select]
/*
* timertcset.pde
* example code illustrating time library real time clock.
*
* rtc clock set in response serial port time message
* processing example sketch set time inclided in download
*/
#include <time.h>
#include <wire.h>
#include <ds1307rtc.h> // basic ds1307 library returns time time_t
void setup() {
serial.begin(9600);
setsyncprovider(rtc.get); // function time rtc
if(timestatus()!= timeset)
serial.println("unable sync rtc");
else
serial.println("rtc has set system time");
}
void loop()
{
if(serial.available())
{
time_t t = processsyncmessage();
if(t >0)
{
rtc.set(t); // set rtc , system time received value
settime(t);
}
}
digitalclockdisplay();
delay(1000);
}
void digitalclockdisplay(){
// digital clock display of time
serial.print(hour());
printdigits(minute());
printdigits(second());
serial.print(" ");
serial.print(day());
serial.print(" ");
serial.print(month());
serial.print(" ");
serial.print(year());
serial.println();
}
void printdigits(int digits){
// utility function digital clock display: prints preceding colon , leading 0
serial.print(":");
if(digits < 10)
serial.print('0');
serial.print(digits);
}
/* code process time sync messages serial port */
#define time_msg_len 11 // time sync pc header followed unix time_t ten ascii digits
#define time_header 't' // header tag serial time sync message
time_t processsyncmessage() {
// return time if valid sync message received on serial port.
while(serial.available() >= time_msg_len ){ // time message consists of header , ten ascii digits
char c = serial.read() ;
serial.print(c);
if( c == time_header ) {
time_t pctime = 0;
for(int i=0; < time_msg_len -1; i++){
c = serial.read();
if( c >= '0' && c <= '9'){
pctime = (10 * pctime) + (c - '0') ; // convert digits number
}
}
return pctime;
}
}
return 0;
}
kann da jemand helfen?
gruß
morris
das mit der sommerzeit ist recht aufwändig zu berechnen, aber es gibt eine lib "ds1307new.h", die das unterstützt.
sie stellt (neben den üblichen anderen funktionen) auch die funktion ismezsummertime() zur verfügung.
sie stellt (neben den üblichen anderen funktionen) auch die funktion ismezsummertime() zur verfügung.
Arduino Forum > International > Deutsch (Moderator: uwefed) > RTC mit Sommerzeit
arduino
Comments
Post a Comment