Diferencia entre revisiones de «setTime()»
(→Vea también) |
(→Ejemplo 1) |
||
Línea 25: | Línea 25: | ||
== Ejemplo 1 == | == Ejemplo 1 == | ||
− | En este ejemplo incluimos la fecha hora 2018-7-14 10:0:0 y mostramos su avance cada 1350 milisegundos. | + | Creamos un reloj sin hardware externo y mostramos la h:m:s.milisegundos cada segundo usando un [[delay()]]. Las funciones estan vacias. |
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | #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); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | {{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. | ||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> |
Revisión del 22:02 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 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
- adjuntTime()
- makeTime() - TimeLib.h
- breakTime()
- DateTime - RTClib.h