TimeAlarms

De ArduWiki
Revisión del 18:15 15 jul 2019 de Kike GL (Discusión | contribuciones) (Referencias externas)

Saltar a: navegación, buscar

Descripción

TimeAlarm es una libreria de Paul Stoffregen y es un complemento de la libreria Time para realizar tareas a intervalos especificos.

Tip: Los intervalos a programar pueden ir desde 1 segundo hasta años. Para intervalor mas cortos vea la libreria TimedAction de Alexander Brevig.


Tipos de tareas

Existen dos tipos de tareas que se pueden crear para que se repitan continuamente o para que se realicen una sola vez.

Alarmas
Las tareas programadas a una hora particular del día.
Temporizadores
Las tareas programadas una vez transcurrido un intervalo de tiempo.

Sintaxis

#include <Time.h>
#include <TimeAlarms.h>
setTime(hh,mm,ss,d,m,a);

Alarm.alarmRepeat([dia,]hh,mm,ss, funcion1);
Alarm.alarmRepeat(valor, funcion2);
Alarm.alarmOnce([dia,]hh,mm,ss, funcion3);
Alarm.alarmOnce(valor, funcion4);
Alarm.timerRepeat(hh,mm,ss, funcion5);
Alarm.timerRepeat(valor, funcion6);
Alarm.timerOnce(hh,mm,ss, funcion7);
Alarm.timerOnce(valor, funcion8);
Alarma.triggerOnce(valor, funcion9);
Alarm.delay(ms);

Parámetros

dia
Dia de la semana. dowMonday, dowSaturday.
hh
Hora
mm
Minutos
ss
Segundos
ms
Milisegundos
valor
Valor de tiempo tipo time_t
Funcion
Nombre de la función que se invoca al cumplirse el tiempo

Retorno

Lo que hace cada una de estos métodos es activar la función asociada.

Métodos

Metodos de libreria TimeAlarm
Método Descripción
Alarm.alarmRepeat([dia,]hh,mm,ss, AlarmFunction); Alarma continua todos los dias
Alarm.alarmOnce([dia,]hh,mm,ss, AlarmFunction); Alarma que se activa la proxima ves que ocurra.
Alarm.triggerOnce(value, AlarmFunction); Una sola alarma determinada por valor time_t
Alarm.timerRepeat(hh,mm,ss, TimerFunction); Llama continuamente a TimerFunction
Alarm.timerOnce(hh,mm,ss, TimerFunction); Llama una sola vez a TimerFunction
Alarm.delay(periodo) Similar de delay() de Arduino, periodo dedo en milisegundos.

Funciones de bajo nivel

Metodos de libreria TimeAlarm
Método Descripción
disable(ID); evitar que la alarma asociada con la ID dada se dispare.
enable(ID); habilita la alarma con el ID dado.
write(ID, valor); Sobreescribe la alarma ID con el valor
read(ID); Lee la alarma ID
readType(ID); Retorna el tipo de alarma
getTriggeredAlarmId(); Retorna el ID de la alarma activa.

Comentarios

  • Esta libreria requiere de la liberia Time
  • Los intervalos a programar pueden ir desde 1 segundo hasta años.

Advertencias

Ejemplo

#include <Time.h>
#include <TimeAlarms.h>

void setup(){
   Serial.begin(9600);
   setTime(8,29,0,1,7,19);     //Poner tiempo a las 8:29:00 am del -JUL-2019
   Alarm.alarmRepeat(8,30,0, MorningAlarm);   //Todos los dias a las 8:30
   Alarm.alarmRepeat(17,45,0, EveningAlarm);  //Todos los dias a las 5:45pm
   Alarm.alarmRepeat(dowSaturday,8,30,30, WeeklyAlarm);  //Cada sabado a las 8:30:30am
   Alarm.timerRepeat(15, Repeats);            //Cada 15 segundos
   Alarm.timerOnce(10, OnceOnly);             //Dentro de 10 segundos
}

void  loop(){  
   relog();
   Alarm.delay(1000);          //Espera 1 segundo
}

// functions to be called when an alarm triggers:
void MorningAlarm(){
   Serial.println("Alarma: apaga luces");    
}

void EveningAlarm(){
   Serial.println("Alarma: prende luces");           
}

void WeeklyAlarm(){
   Serial.println("Alarma: Es lunes temprano");
}

void ExplicitAlarm(){
   Serial.println("Alarma: - this triggers only at the given date and time");       
}

void Repeats(){
   Serial.println("Temporizador: cada 15 segundos.");         
}

void OnceOnly(){
   Serial.println("Temporizador: solo una vez.");  
}

void relog(){
   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');
   }
   printDigits();
   Serial.println(second()); 
}

Vea también


Referencias externas