time t

De ArduWiki
Revisión del 20:18 11 jul 2018 de Kike GL (Discusión | contribuciones) (Ejemplo 3)

Saltar a: navegación, buscar

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 este ejemplo Arduino espera que se envíe desde el monitor un tiempo UNIX del formato T1531526400 (2018-7-14 0:0:0).

#include <TimeLib.h>

void setup(){
   Serial.begin(9600);
   pinMode(13, OUTPUT);
   Serial.println("Esperando tiempo UNIX 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() {
   const unsigned long DEFAULT_TIME = 1514764800; //1-ENE-2018

   if (Serial.find("T")) {
      unsigned long pc = Serial.parseInt();
      //Controla valides mayor a 1-ENE-2018
      if (pc >= DEFAULT_TIME) { 
         setTime(pc);      //Ajusta la fecha-hora
      }
   }
}

Vea tambien

Referencias