apuntes_Arduino/tests/ok_rtc/ok_rtc.ino
jp.av.dev 4956fda212 reestructuracion completa
pendientes verificar links, otros
2022-04-04 14:40:51 -04:00

84 lines
2.1 KiB
C++
Executable File

#include <RTClib.h>
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'));
}