DATE bzw TIME sind die System-Datum bzw System-Zeit des PC. Diese wird im Kompilations-Zeitpunkt in den Sketch eingebaut und dieser setzt die RTC die am Arduino hängt.
Damit nicht bei jedem Start des Arduino die RTC auf die zum Kopilierzeitpunkt richtigen Zeit gesetzt wird muß wie my_xy_projekt sofort der Sketch ersetzt werden.
Ich ziehe die Lösung die Zeit mittels eines über serial verschickten Strings ( zB TssmmhhWDDMMYYYY) vor. siehe Beispiel der DS3231 Bibliothek: ds3231/examples/rtc_ds3231/rtc_ds3231.ino at master · rodan/ds3231 · GitHub
void parse_cmd(char *cmd, int cmdsize)
{
uint8_t i;
uint8_t reg_val;
char buff[BUFF_MAX];
struct ts t;
//snprintf(buff, BUFF_MAX, "cmd was '%s' %d\n", cmd, cmdsize);
//Serial.print(buff);
// TssmmhhWDDMMYYYY aka set time
if (cmd[0] == 84 && cmdsize == 16) {
//T355720619112011
t.sec = inp2toi(cmd, 1);
t.min = inp2toi(cmd, 3);
t.hour = inp2toi(cmd, 5);
t.wday = cmd[7] - 48;
t.mday = inp2toi(cmd, 8);
t.mon = inp2toi(cmd, 10);
t.year = inp2toi(cmd, 12) * 100 + inp2toi(cmd, 14);
DS3231_set(t);
Serial.println("OK");
...
}
Grüße Uwe