Oye muchas gracias!! lo voy a probar a ver si me funciona
surbyte:
Te recomiendo el uso de esta librería TimeAlarms Library
Este es el ejemplo básico
/*
- TimeAlarmExample.pde
- This example calls alarm functions at 8:30 am and at 5:45 pm (17:45)
- and simulates turning lights on at night and off in the morning
- A weekly timer is set for Saturdays at 8:30:30
- A timer is called every 15 seconds
- Another timer is called once only after 10 seconds
- At startup the time is set to Jan 1 2011 8:29 am
*/
#include <Time.h>
#include <TimeAlarms.h>
void setup()
{
Serial.begin(9600);
setTime(8,29,0,1,1,11); // set time to Saturday 8:29:00am Jan 1 2011
// create the alarms
Alarm.alarmRepeat(8,30,0, MorningAlarm); // 8:30am every day
Alarm.alarmRepeat(17,45,0,EveningAlarm); // 5:45pm every day
Alarm.alarmRepeat(dowSaturday,8,30,30,WeeklyAlarm); // 8:30:30 every Saturday
Alarm.timerRepeat(15, Repeats); // timer for every 15 seconds
Alarm.timerOnce(10, OnceOnly); // called once after 10 seconds
}
void loop(){
digitalClockDisplay();
Alarm.delay(1000); // wait one second between clock display
}
// functions to be called when an alarm triggers:
void MorningAlarm(){
Serial.println("Alarm: - turn lights off");
}
void EveningAlarm(){
Serial.println("Alarm: - turn lights on");
}
void WeeklyAlarm(){
Serial.println("Alarm: - its Monday Morning");
}
void ExplicitAlarm(){
Serial.println("Alarm: - this triggers only at the given date and time");
}
void Repeats(){
Serial.println("15 second timer");
}
void OnceOnly(){
Serial.println("This timer only triggers once");
}
void digitalClockDisplay()
{
// digital clock display of the time
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.println();
}
void printDigits(int digits)
{
Serial.print(":");
if(digits < 10)
Serial.print('0');
Serial.print(digits);
}
Tiene todo tipo de alarmas posibles. Las que se repiten Alarm.Repeat, las que se ejecutan una vez, o las que se ejecutan solo 1 vez por semana.
Ademas de alarmas/timers para repetir cosas cada X segundos con lo cual puedes lograr otros efectos
Lo unico a considerar es que la alarma se ejecuta 1 vez y no permanece. Es decir
Si quieres que algo se accione a las 8:00:00 pues lo haces
Si quieres que algo se apague a determinada hora lo mismo.
Pero no esperes que esa accion de las 8 se mantenga porque no lo hará. Imagina un pulsador. Tu pulsas y si no capturas esa pulsación, su acción no se repite.
Prueba el ejemplo y no dejes de usar `Alarm.delay(1000);` al final o no funcionará.
Si quieres probar algo rápido en el día usa Alarm.delay(1); y el sistema simulará en el arduino una ejecución que te permita ver si todas tus alarmas en el día se accionan como quieres.