TimeAlarms cosa scegliere?

Ciao,
Volevo gestire degli eventi in base tempo trascorso preso da RTC.
Ho due possibilità:

il primo includendo due librereie:

#include <Time.h> 
#include <TimeAlarms.h>
//setup()  =>
Alarm.alarmRepeat(7,35,0, PrimoAllarme);

il secondo usando un semplice confronto:

 if( (now.hour() == 7) && (now.minute()== 35)){
    PrimoAllarme();
      }

l’ azione è la medesima:

void PrimoAllarme(){
  Serial.println("Alarme: - Accendere Luci");    
    analogWrite(AaaPin,254);
}

Rispetto ai due sistemi quale è la migliore soluzione, e per quale motivo sarebbe meglio importare due lbrerie?

puoi considerare varie cose,
quanto ti occupa in ram ed in flash l'una e l'altra alternativa ?
Quanto ritieni utile nascondere dietro una libreria il codice ?

spesso le librerie si usano anche solo per rendere piu' leggibile e manutenibile il codice, ma nel tuo caso sembra che cambi ben poco, a queso punto io farei senza.

Ti ringrazio,
se non sbaglio si dichiarano nel setup() magari questi non sono
influenzati da cosa si fa nel loop() ?
o devo pensare anche ad un sistema alternativo?

"Giocando" con gli allarmi devi solo stare attento all'accavallamento su più giorni, se cioè l'attivazione del dispositivo inizia prima di mezzanotte e termina dopo.
Esempio: accendere le luci serali dalle 21:00 alle 06:00.

Sembra una cavolata ma con un semplice controllo come hai fatto tu su ore e minuti poi non funziona nulla :wink:
Questo è un caso in cui magari una libreria ti semplifica la vita perché fa il "lavoro sporco" al posto tuo. Per "lavoro sporco" intendo il controllo dell'accavallamento dell'evento su 2 giorni o più.

inoltre occio a usare

if( (now.hour() == 7) && (now.minute()== 35)){
    PrimoAllarme();
      }

..se magari usi anche i secondi,oppure hai sottoprogrammi particolarmente lenti(x es. interazione con l'uomo,lcd con sottomenu),ti potrebbe capitare di saltare alcuni allarmi,magari perchè in quel minuto c'è il tizio che va nei sottomenu..
per esempio io uso anche una variabile booleana allarmeScatenato1 che metto a true quando lanco l'allarme..se è a false,allora controllo if((now.hour() == 7) && (now.minute()>= 35) (e ho 25 minuti di margine)

poi ognuno ha il suo stile..

m_ri:
(x es. interazione con l’uomo,lcd con sottomenu),ti potrebbe capitare di saltare alcuni allarmi,magari perchè in quel minuto c’è il tizio che va nei sottomenu…
per esempio io uso anche una variabile booleana allarmeScatenato1 che metto a true quando lanco l’allarme…se è a false,allora controllo if((now.hour() == 7) && (now.minute()>= 35) (e ho 25 minuti di margine)

Pensavo che 59 secondi fossero un tempo sufficiente, ma evidentemente grazie alla tua esperienza questo non basta.
Grazie per il suggerimento
Luca

mah dipende tanto da cosa e come implementi..in moltissimi casi 59 secondi son più che sufficienti..ma se hai un menu interattivo(x esempio),e sai che l'arduino esegue solamente il codice del menù quando sei dentro,allora occio..buona giornata :slight_smile: