Diferencia entre revisiones de «setTime()»
(→Ejemplo 1) |
(→Ejemplo 2) |
||
Línea 69: | Línea 69: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | == Ejemplo | + | == Ejemplo 3 == |
− | 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. | + | 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. Debes enviar algo como T1531562400 (2018-7-14 10:00:00). |
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
Línea 133: | Línea 133: | ||
} | } | ||
} | } | ||
− | }</syntaxhighlight> | + | } |
+ | </syntaxhighlight> | ||
+ | |||
+ | == Ejemplo 4 == | ||
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | </syntaxhighlight> | ||
== Vea también == | == Vea también == |
Revisión del 22:10 27 abr 2019
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
Creamos un reloj sin hardware externo y mostramos la h:m:s.milisegundos cada segundo usando un delay(). Las funciones estan vacias.
#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(){
Serial.print(hour());
Serial.print(":");
Serial.print(minute());
Serial.print(":");
Serial.print(second());
Serial.print(".");
Serial.println(millis());
delay(1000);
}
Nota: Mira la secuencia cada ves hay 1001 milisegundos mas. Es debido a que el tiempo continua corriendo.
Ejemplo 2
En este ejemplo incluimos la fecha hora 2018-7-14 10:0:0 y mostramos su avance cada 1350 milisegundos. Cada ciclo consultamos la hora y la guardamos en una variable por lo que ahora todas las funciones usan exactamente la misma hora.
#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 3
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. Debes enviar algo como T1531562400 (2018-7-14 10:00:00).
#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
}
}
}
Ejemplo 4
Vea también
- Fecha y hora
- time_t - TimeLib.h
- tmElements_t - TimeLib.h
- now() - TimeLib.h
- adjuntTime()
- makeTime() - TimeLib.h
- breakTime()
- DateTime - RTClib.h