Diferencia entre revisiones de «time t»
De ArduWiki
(→Advertencias) |
(→Ejemplo 2) |
||
Línea 28: | Línea 28: | ||
Si usas la libreria RTClib.h tendras disponible la clase [[DateTime]]. | Si usas la libreria RTClib.h tendras disponible la clase [[DateTime]]. | ||
− | |||
DateTime hoy = rtc.noy(); | DateTime hoy = rtc.noy(); | ||
time_t unix = hoy.unixtime(); | time_t unix = hoy.unixtime(); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Ejemplo 3 == | ||
+ | Con ese ejemplo Arduino espeta que se envie desde el monitor un tiempo UNIX del formato T1531526400 (2018-7-14 0:0:0). | ||
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | #include <TimeLib.h> | ||
+ | #define TIME_HEADER "T" //Encabezado para enviar hora unix | ||
+ | |||
+ | void setup(){ | ||
+ | Serial.begin(9600); | ||
+ | pinMode(13, OUTPUT); | ||
+ | Serial.println("Esperando mensaje de sicronizacion por puerto serie"); | ||
+ | } | ||
+ | |||
+ | void loop(){ | ||
+ | if (Serial.available()) { | ||
+ | sincroniza(); | ||
+ | } | ||
+ | if (timeStatus()!= timeNotSet) { | ||
+ | reloj(); | ||
+ | } | ||
+ | if (timeStatus() == timeSet) { | ||
+ | digitalWrite(13, HIGH); //Sincronizado | ||
+ | }else{ | ||
+ | digitalWrite(13, LOW); //Falta sincronizar | ||
+ | } | ||
+ | delay(1000); | ||
+ | } | ||
+ | |||
+ | void reloj(){ | ||
+ | Serial.print(year()); | ||
+ | Serial.print("-"); | ||
+ | if (month()<10){ | ||
+ | Serial.print('0'); | ||
+ | } | ||
+ | Serial.print(month()); | ||
+ | Serial.print("-"); | ||
+ | if (day()<10){ | ||
+ | Serial.print('0'); | ||
+ | } | ||
+ | Serial.print(day()); | ||
+ | Serial.print(" "); | ||
+ | if (hour()<10){ | ||
+ | Serial.print('0'); | ||
+ | } | ||
+ | Serial.print(hour()); | ||
+ | Serial.print(":"); | ||
+ | if (minute() < 10){ | ||
+ | Serial.print('0'); | ||
+ | } | ||
+ | Serial.print(minute()); | ||
+ | Serial.print(":"); | ||
+ | if (second() < 10){ | ||
+ | Serial.print('0'); | ||
+ | } | ||
+ | Serial.println(second()); | ||
+ | } | ||
+ | |||
+ | void sincroniza() { | ||
+ | unsigned long pctime; | ||
+ | const unsigned long DEFAULT_TIME = 1514764800; //1-ENE-2018 | ||
+ | |||
+ | if (Serial.find(TIME_HEADER)) { | ||
+ | pctime = Serial.parseInt(); | ||
+ | //Controla valides mayor a 1-ENE-2018 | ||
+ | if (pctime >= DEFAULT_TIME) { | ||
+ | setTime(pctime); //Ajusta la fecha-hora | ||
+ | } | ||
+ | } | ||
+ | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Revisión del 00:08 12 jul 2018
Contenido
Descripcion
time_t es un tipo unsigned long usado para almacenar los segundos transcurridos desde el 1-ENE-1970 o también llamada fecha Unix.
Sintaxis
time_t variable [= valor];
Parametros
Comentarios
- La libreria Time.h agrega la funcionalidad de reloj a Arduino con o sin hardware externo. Permite que un boceto obtenga la hora y la fecha como: segundo, minuto, hora, día, mes y año.
- También proporciona tiempo time_t estándar, por lo que los tiempos transcurridos se pueden calcular fácilmente y los valores de tiempo se pueden compartir en diferentes plataformas.
Advertencias
- Tenga en cuenta que se requiere un parámetro para estas funciones de cadena. El argumento NO es la marca de tiempo, por ejemplo, time_t, pero debe ser algo así como t.month(). Entonces monthStr(month()) o dayStr(día de la semana()) funcionará.
Ejemplo 1
void setup(){
setTime(10,0,0,14,7,2018); //h,min,seg,dia,mes,año
}
void loop(){
}
Ejemplo 2
Si usas la libreria RTClib.h tendras disponible la clase DateTime.
DateTime hoy = rtc.noy(); time_t unix = hoy.unixtime(); </syntaxhighlight>
Ejemplo 3
Con ese ejemplo Arduino espeta que se envie desde el monitor un tiempo UNIX del formato T1531526400 (2018-7-14 0:0:0).
#include <TimeLib.h>
#define TIME_HEADER "T" //Encabezado para enviar hora unix
void setup(){
Serial.begin(9600);
pinMode(13, OUTPUT);
Serial.println("Esperando mensaje de sicronizacion por puerto serie");
}
void loop(){
if (Serial.available()) {
sincroniza();
}
if (timeStatus()!= timeNotSet) {
reloj();
}
if (timeStatus() == timeSet) {
digitalWrite(13, HIGH); //Sincronizado
}else{
digitalWrite(13, LOW); //Falta sincronizar
}
delay(1000);
}
void reloj(){
Serial.print(year());
Serial.print("-");
if (month()<10){
Serial.print('0');
}
Serial.print(month());
Serial.print("-");
if (day()<10){
Serial.print('0');
}
Serial.print(day());
Serial.print(" ");
if (hour()<10){
Serial.print('0');
}
Serial.print(hour());
Serial.print(":");
if (minute() < 10){
Serial.print('0');
}
Serial.print(minute());
Serial.print(":");
if (second() < 10){
Serial.print('0');
}
Serial.println(second());
}
void sincroniza() {
unsigned long pctime;
const unsigned long DEFAULT_TIME = 1514764800; //1-ENE-2018
if (Serial.find(TIME_HEADER)) {
pctime = Serial.parseInt();
//Controla valides mayor a 1-ENE-2018
if (pctime >= DEFAULT_TIME) {
setTime(pctime); //Ajusta la fecha-hora
}
}
}