#include RTC_DS3231 reloj; volatile DateTime fecha; unsigned long intervalo=1000; unsigned long previoMillis=0; void setup() { Serial.begin(9600); Serial.println("iniciando"); if(!reloj.begin()) { Serial.println("RTC no encontrado!!"); } else { Serial.println("RTC ok");} //reloj.adjust(DateTime(__DATE__, __TIME__)); } void loop() { unsigned long actualMillis = millis(); if ((unsigned long)(actualMillis - previoMillis) >= intervalo) { fecha = reloj.now(); mostrarFechaSerie(); previoMillis = millis(); } } //En caso de ser necesario mostrar hora, este codigo aƱade un 0 a los valores menores a 10 String getHora(char var) { switch (var) { case 'h': if(fecha.hour() < 10) { return ('0'+(String)fecha.hour()); break; } else { return (String)fecha.hour();break; } case 'm': if(fecha.minute() <10) { return ('0'+(String)fecha.minute()); break; } else { return (String)fecha.minute();break; } case 's': if(fecha.second() <10) { return ('0'+(String)fecha.second()); break; } else { return (String)fecha.second();break; } case 'd': if(fecha.day() <10) { return ('0'+(String)fecha.day()); break; } else { return (String)fecha.day();break; } case 'n': if(fecha.month() <10) { return ('0'+(String)fecha.month()); break; } else { return (String)fecha.month();break; } case 'a': if(fecha.year() <10) { return ('0'+(String)fecha.year()); break; } else { return (String)fecha.year();break; } } } // Enviar hora y fecha por puerto serie void mostrarFechaSerie() { Serial.print(getHora('d')); Serial.print("/"); Serial.print(getHora('n')); Serial.print("/"); Serial.print(getHora('a')); Serial.print(" "); Serial.print(getHora('h')); Serial.print(":"); Serial.print(getHora('m')); Serial.print(":"); Serial.println(getHora('s')); }