TimeAlarms
De ArduWiki
Contenido
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
Métodos
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
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