Diferencia entre revisiones de «time t»

De ArduWiki
Saltar a: navegación, buscar
(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]].
  
<syntaxhighlight lang="c++">
 
 
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

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
      }
   }
}

Vea tambien

Referencias