Diferencia entre revisiones de «TimeAlarms»

De ArduWiki
Saltar a: navegación, buscar
(Descripción)
(Referencias externas)
 
(No se muestran 21 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 
== Descripción ==
 
== Descripción ==
 
[https://github.com/PaulStoffregen/TimeAlarms TimeAlarm] es una libreria de Paul Stoffregen y es un complemento de la libreria Time para realizar tareas a intervalos especificos.
 
[https://github.com/PaulStoffregen/TimeAlarms 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 [http://www.arduino.cc/playground/Code/TimedAction TimedAction] de Alexander Brevig.}}
  
 
== Tipos de tareas ==
 
== 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.
 
;Alarmas:Las tareas programadas a una hora particular del día.
 
;Temporizadores:Las tareas programadas una vez transcurrido un intervalo de tiempo.
 
;Temporizadores:Las tareas programadas una vez transcurrido un intervalo de tiempo.
 
Estas tareas se pueden crear para que se repital continuamente o para que se realicen una sola vez.
 
  
 
== Sintaxis ==
 
== Sintaxis ==
 
<pre>
 
<pre>
Alarm.alarmRepeat (8,30,0, MorningAlarm); //Todos los dias a las 8:30 am
+
#include <Time.h>
Alarm.alarmRepeat (dowMonday, 9,15,0, MondayMorningAlarm); //Los lunes a las 9:15
+
#include <TimeAlarms.h>
Alarm.alarmOnce (8,30,0, MorningAlarm); //Una sola vez mañana a las 8:30
+
setTime(hh,mm,ss,d,m,a);
Alarm.timerRepeat (15, Repeticiones);   //Tarea del temporizador cada 15 segundos
+
 
Alarm.timerOnce (10, OnceOnly);         //Llama una vez después de 10 segundos
+
Alarm.alarmRepeat([dia,]hh,mm,ss, funcion1);
Alarma.triggerOnce (time_t value, explicitAlarm); // valor especifica una fecha y hora
+
Alarm.alarmRepeat(valor, funcion2);
Alarm.delay (periodo);                   //Similar a Arduino [[delay()]]
+
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);
 
</pre>
 
</pre>
 +
 +
== 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 ==
 +
{| class="wikitable"
 +
|+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 ==
 +
 +
{| class="wikitable"
 +
|+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 ==
 
== Comentarios ==
 +
* Esta libreria requiere de la liberia [[Time]]
 +
* Los intervalos a programar pueden ir desde 1 segundo hasta años.
  
 
== Advertencias ==
 
== Advertencias ==
Línea 31: Línea 93:
 
void setup(){
 
void setup(){
 
   Serial.begin(9600);
 
   Serial.begin(9600);
   setTime(8,29,0,1,1,11); // set time to Saturday 8:29:00am Jan 1 2011
+
   setTime(8,29,0,1,7,19);     //Poner tiempo a las 8:29:00 am del -JUL-2019
  // create the alarms
+
   Alarm.alarmRepeat(8,30,0, MorningAlarm);   //Todos los dias a las 8:30
   Alarm.alarmRepeat(8,30,0, MorningAlarm); // 8:30am every day
+
   Alarm.alarmRepeat(17,45,0, EveningAlarm);  //Todos los dias a las 5:45pm
   Alarm.alarmRepeat(17,45,0,EveningAlarm);  // 5:45pm every day
+
   Alarm.alarmRepeat(dowSaturday,8,30,30, WeeklyAlarm);  //Cada sabado a las 8:30:30am
   Alarm.alarmRepeat(dowSaturday,8,30,30,WeeklyAlarm);  // 8:30:30 every Saturday
+
   Alarm.timerRepeat(15, Repeats);            //Cada 15 segundos
   Alarm.timerRepeat(15, Repeats);            // timer for every 15 seconds   
+
   Alarm.timerOnce(10, OnceOnly);            //Dentro de 10 segundos
   Alarm.timerOnce(10, OnceOnly);            // called once after 10 seconds
 
 
}
 
}
  
 
void  loop(){   
 
void  loop(){   
   digitalClockDisplay();
+
   relog();
   Alarm.delay(1000);          // wait one second between clock display
+
   Alarm.delay(1000);          //Espera 1 segundo
 
}
 
}
  
 
// functions to be called when an alarm triggers:
 
// functions to be called when an alarm triggers:
 
void MorningAlarm(){
 
void MorningAlarm(){
   Serial.println("Alarm: - turn lights off");     
+
   Serial.println("Alarma: apaga luces");     
 
}
 
}
  
 
void EveningAlarm(){
 
void EveningAlarm(){
   Serial.println("Alarm: - turn lights on");           
+
   Serial.println("Alarma: prende luces");           
 
}
 
}
  
 
void WeeklyAlarm(){
 
void WeeklyAlarm(){
   Serial.println("Alarm: - its Monday Morning");    
+
   Serial.println("Alarma: Es lunes temprano");
 
}
 
}
  
 
void ExplicitAlarm(){
 
void ExplicitAlarm(){
   Serial.println("Alarm: - this triggers only at the given date and time");       
+
   Serial.println("Alarma: - this triggers only at the given date and time");       
 
}
 
}
  
 
void Repeats(){
 
void Repeats(){
   Serial.println("15 second timer");         
+
   Serial.println("Temporizador: cada 15 segundos.");         
 
}
 
}
  
 
void OnceOnly(){
 
void OnceOnly(){
   Serial.println("This timer only triggers once");   
+
   Serial.println("Temporizador: solo una vez.");   
 
}
 
}
  
void digitalClockDisplay(){
+
void relog(){
   //digital clock display of the time
+
   if (hour() < 10){
 +
      Serial.print('0');
 +
  }
 
   Serial.print(hour());
 
   Serial.print(hour());
   printDigits(minute());
+
   Serial.print(':');
   printDigits(second());
+
   if (minute() < 10){
  Serial.println();  
+
      Serial.print('0');
}
+
  }
 
+
  Serial.print(minute());
void printDigits(int digits){
+
   Serial.print(':');
   Serial.print(":");
+
   if (second() < 10){
   if (digits < 10){
 
 
       Serial.print('0');
 
       Serial.print('0');
 
   }
 
   }
   Serial.print(digits);
+
  printDigits();
 +
   Serial.println(second());  
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>
Línea 91: Línea 154:
  
 
== Referencias externas ==
 
== Referencias externas ==
[[Cotegory:Librerias]]
+
* [https://www.arduinolibraries.info/libraries All Libraries]
 +
* [http://playground.arduino.cc/code/time Time] de Paul Stoffregen
 +
* [https://github.com/PaulStoffregen/TimeAlarms TimeAlarms] de Paul Stoffregen
 +
* [https://github.com/PaulStoffregen/TimerOne TimerOne] de Paul Stoffregen
 +
* [http://www.arduino.cc/playground/Code/TimedAction TimedAction] de Alexander Brevig
 +
 
 +
[[Category:Librerias]]
 +
[[Category:Libreria Time]]

Revisión actual del 22:22 15 jul 2019

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