bool debug = true;
volatile int heure, minute,jour;
int val_intensite = 0;
int val_volume = 20;
volatile unsigned long timeMillis = 0;
volatile bool set_time = false;
volatile int set_time_heure = 0;
volatile int set_time_minute = 0;
volatile int set_time_jour = 0;
volatile int set_time_state = 0;
char AFFICHE_LED[6];
/*
bool check_interval(int heure_start, int minute_start, int heure_stop,int minute_stop)
{
if (heure_start <= heure_stop) {
// Cas normal : l'intervalle est dans la même journée
if ((heure > heure_start || (heure == heure_start && minute >= minute_start)) &&
(heure < heure_stop || (heure == heure_stop && minute < minute_stop))) {
return true;
}
} else {
// Cas où l'intervalle chevauche minuit
if ((heure > heure_start || (heure == heure_start && minute >= minute_start)) ||
(heure < heure_stop || (heure == heure_stop && minute < minute_stop))) {
return true;
}
}
}*/
bool check_interval(int heure_start, int minute_start, int heure_stop,int minute_stop)
{
// Convertit tout en minutes pour faciliter les comparaisons
int minutesActuelles = heure * 60 + minute;
int minutesDebut = heure_start * 60 + minute_start;
int minutesFin = heure_stop * 60 + minute_stop;
// Gère le cas où l'intervalle dépasse minuit
if (minutesFin < minutesDebut) { // L'intervalle s'étend sur deux jours
return minutesActuelles >= minutesDebut || minutesActuelles < minutesFin;
} else {
return minutesActuelles >= minutesDebut && minutesActuelles < minutesFin;
}
}
bool check_alarme()
{
return true;
}
#define AFFICHE_LED_ENABLE 0
#define AFFICHE_LED_AT_ALARME (AFFICHE_LED_ENABLE+1)
#define HEURE_AFFICHE_LED (AFFICHE_LED_AT_ALARME + 1)
#define HEURE_ETEINDRE_LED (HEURE_AFFICHE_LED + 2 )
bool etat_affichage = true;
bool affiche_heure(void)
{
if (AFFICHE_LED[AFFICHE_LED_ENABLE] == 0)
return true;
// Cas d'allumage sur alarme
// faut vérifier si on une alarme active pour aujourd'hui
if (AFFICHE_LED[AFFICHE_LED_AT_ALARME]==1)
{
if(etat_affichage == false)
{
// Verifie si on doit allumer
etat_affichage = check_alarme();
}
else if ((AFFICHE_LED[HEURE_ETEINDRE_LED] == heure) && (AFFICHE_LED[HEURE_ETEINDRE_LED+1] == minute))
{
// on verifie si on doit eteindre
etat_affichage = false;
}
return etat_affichage;
}
return check_interval(AFFICHE_LED[HEURE_AFFICHE_LED],AFFICHE_LED[HEURE_AFFICHE_LED+1],AFFICHE_LED[HEURE_ETEINDRE_LED],AFFICHE_LED[HEURE_ETEINDRE_LED+1]);
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
heure = 10;
minute = 30;
AFFICHE_LED[AFFICHE_LED_ENABLE] = 1;
AFFICHE_LED[AFFICHE_LED_AT_ALARME] = 0;
AFFICHE_LED[HEURE_AFFICHE_LED] = 8;
AFFICHE_LED[HEURE_AFFICHE_LED+1] = 30;
AFFICHE_LED[HEURE_ETEINDRE_LED] = 21;
AFFICHE_LED[HEURE_ETEINDRE_LED+1] = 00;
etat_affichage = true;
}
void loop() {
Serial.println("====================");
heure = 20;
minute = 00;
Serial.println(affiche_heure());
heure = 21;
minute = 31;
Serial.println(affiche_heure());
heure = 5;
minute = 45;
Serial.println(affiche_heure());
heure = 8;
minute = 55;
Serial.println(affiche_heure());
delay(1000);
}