setTime()
De ArduWiki
Contenido
Descripcion
La función setTime() esta disponible luego de invocada la libreria TimeLib.h y nos permite decirle al Arduino en que día y hora estamos y que a partir de allí mantenga adecuadamente esa fecha hasta su próximo reseteo.
Sintaxsis
setTime(ss); //Numero de segundos desde 1-ENE-1970 setTime(h,m,s,dia,mes,año); //hora, minuto, segundo dia, mes, año.
Parámetros
- ss
- Segundos transcurridos desde 1-ENE-1970
- h
- Hora (0~23)
- m
- Minuto (0~59)
- s
- Segundo (0~59)
- dia
- Dia (1~31)
- mes
- Mes (1~12)
- año
- Año (1970~2069)
Comentarios
- Si necesitas hacer conversiones entre fecha y Unix Time Stamp usa Epoch Converter
- El formato Unix Time Stamp es muy util para hacer operaciones entre dos fechas.
Advertencias
Es indispensable incluir en el boceto #include <TimeLib.h> para que funcione o arrojara un error.
Ejemplo 1
En este ejemplo incluimos la fecha hora 2018-7-14 10:0:0 y mostramos su avance cada 1350 milisegundos.
#include <TimeLib.h>
void setup(){
Serial.begin(9600);
//setTime(1531562400); //Unix Time Stamp
setTime(10,0,0,14,7,2018); //Formato h,m,s,d,m,a
}
void loop(){
time_t t = now();
Serial.print(hour(t));
Serial.print(":");
Serial.print(minute(t));
Serial.print(":");
Serial.println(second(t));
delay(1350);
}
Ejemplo 2
Muestra Arduino como un reloj sin hardware externo. Se sincroniza por mensajes enviados por el puerto serie, muestra la fecha y hora cada segundo por consola y administra el LED incorporado.
#include <TimeLib.h>
#define TIME_HEADER "T" //Encabezado de mensaje de sincronizacion
void setup() {
Serial.begin(115200);
pinMode(13, OUTPUT);
Serial.println("Esperando sincronizacion");
}
void loop(){
if (Serial.available()) {
sinc();
}
if (timeStatus()!= timeNotSet) {
printFecha();
}
if (timeStatus() == timeSet) {
digitalWrite(13, HIGH); //Esta sincronizado
}else{
digitalWrite(13, LOW); //Requiere sincronizacion
}
delay(1000);
}
void printFecha(){
if (day() < 10){
Serial.print("0");
}
Serial.print(day()); //dia
Serial.print("-");
if (month() < 10){
Serial.print("0");
}
Serial.print(month()); //mes
Serial.print("-");
Serial.print(year()); //año
Serial.print(" ");
if (hour() < 10){
Serial.print("0");
}
Serial.print(hour()); //hora
Serial.print(":");
if (minute() < 10){
Serial.print("0");
}
Serial.print(minute()); //minutos
Serial.print(":");
if (second() < 10){
Serial.print("0");
}
Serial.println(second()); //segundos
}
void sinc() {
if (Serial.find(TIME_HEADER)) {
unsigned long pctime = Serial.parseInt();
if (pctime >= 1357041600) { //1-ENE-2013
setTime(pctime); //Sincroniza reloj Arduino
}
}
}
Vea también
- Fecha y hora
- time_t - TimeLib.h
- tmElements_t - TimeLib.h
- now() - TimeLib.h
- makeTime() - TimeLib.h
- DateTime - RTClib.h