hello
regarde ce code
//debut programme
#include <Wire.h>
#include <DS3231.h>
DS3231 clock;
RTCDateTime dt;
int memo_heure; // bit de vie affiche la date toutes les heures
int memo_minute; // bit de vie affiche un . ou un * toutes les minutes
boolean flag_minute=true; //flag pour faire l'inversion des affichages . et *
const byte relais_sonnerie = 3; //raccorder la cde de la sonnerie à la pinoche 3
int TabEvt [18][1][6] = //tableau des haoraires de sonnerie
{
{ { 7, 45,00, 7, 45,02}}, //fourchette de 2 secondes pour déclencher la sonnerie
{ { 7, 57,00, 7, 57,02}},
{ { 8, 56,00, 8, 56,02}}, //la sonnerie devra durer 2 secondes minimum
{ { 9, 00,00, 9, 00,02}},
{ { 9, 55,00, 9, 55,02}}, //pour ne pas avoir de double déclenchement
{ {10, 06,00, 10, 06,02}},
{ {10, 57,00, 10, 57,02}}, //la durée de la sonnerie se parametre dans le tableau tempo
{ {11, 00,00, 11, 00,02}},
{ {12, 00,00, 12, 00,02}}, //ci dessous.
{ {12, 45,00, 12, 45,02}},
{ {12, 57,00, 12, 57,02}}, //si la durée doit etre inférieure à 2 secondes, il faudra
{ {13, 56,00, 13, 56,02}},
{ {14, 00,00, 14, 00,02}}, //modifier la fouchette dans TabEvt
{ {14, 55,00, 14, 55,02}},
{ {15, 05,00, 15, 05,02}}, //
{ {15, 56,00, 15, 56,02}},
{ {16, 00,00, 16, 00,02}},
{ {17, 00,00, 17, 00,02}},
};
int tempo [18] {04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04}; // durée de la sonnerie en secondes
char* JOURS []={" ","lundi ","mardi ","mercredi ","jeudi ","vendredi ","samedi ","dimanche "};
//**************************************************************************************************************************
//************************************************************************************SETUP*********************************
//**************************************************************************************************************************
void setup()
{
Wire.begin();
Serial.begin(115200);
pinMode (relais_sonnerie, OUTPUT); analogWrite(relais_sonnerie, LOW);
clock.begin();
clock.setDateTime(__DATE__, __TIME__);
dt = clock.getDateTime();
affichage_date_en_francais();
memo_heure=(atoi(clock.dateFormat("H", dt))); // "bit de vie" horaire
memo_minute=(atoi(clock.dateFormat("i", dt))); // "bit de vie" minute
Serial.println("fin set up");
}
//**************************************************************************************************************************
//************************************************************************************LOOP**********************************
//**************************************************************************************************************************
void loop()
{
dt = clock.getDateTime();
if(memo_minute!=(atoi(clock.dateFormat("i", dt)))) //pour avoir un affichage de l'heure à chaque heure pile
{
if (flag_minute == true){Serial.print(".");flag_minute = false;}
else {Serial.print("*");flag_minute = true;} //car l'attente d'un evemement est longue
memo_minute=(atoi(clock.dateFormat("i", dt)));
}
if(memo_heure!=(atoi(clock.dateFormat("H", dt)))) //pour avoir un affichage de l'heure à chaque heure pile
{
Serial.println("");
affichage_date_en_francais(); //cet appel à l'affichage permet de savoir que le prg tourne bien
memo_heure=(atoi(clock.dateFormat("H", dt))); //car l'attente d'un evemement est longue
}
//si nous sommes un lundi, mardi, mercredi, jeudi, vendredi et si c'est une heure programmée, la sonnerie retentira
if (((atoi(clock.dateFormat("w", dt)))>=1)&&((atoi(clock.dateFormat("w", dt)))<=6))//samedi=6
{
for (int indice = 0; indice<=17; indice++)
{
if (((atoi(clock.dateFormat("H", dt))) == TabEvt[indice] [0][0]) //heure de declenchement de la sonnerie
&& ((atoi(clock.dateFormat("i", dt))) == TabEvt[indice] [0][1]) //minute de declenchement de la sonnerie
&& ((atoi(clock.dateFormat("s", dt))) == TabEvt [indice][0][2]) //seconde de declenchement de la sonnerie
&& ((atoi(clock.dateFormat("h", dt))) <= TabEvt [indice][0][3]) //heure d'arret de la sonnerie
&& ((atoi(clock.dateFormat("i", dt))) <= TabEvt [indice][0][4]) //minute d'arret de la sonnerie
&& ((atoi(clock.dateFormat("s", dt))) <= TabEvt [indice][0][5])) //seconde d'arret de la sonnerie
{
Serial.println(clock.dateFormat("l d F Y H:i:s", dt));
Serial.print ("indice =");Serial.print(indice);Serial.print(" ");
Serial.print (TabEvt[indice] [0][0]);Serial.print(" ");Serial.print(TabEvt[indice] [0][1]);Serial.print(" ");
Serial.print (TabEvt[indice] [0][2]);Serial.print("................");
Serial.print (TabEvt[indice] [0][3]);Serial.print(" ");Serial.print(TabEvt[indice] [0][4]);Serial.print(" ");
Serial.println(TabEvt[indice] [0][5]);
Serial.flush();
on_sonne(tempo[indice]);
}
else
{
// on_ne_sonne_pas();
}
}
}
delay(1000);
}
//************************************
//**************SONNERIE**************
//************************************
void on_sonne(int temps)//
{
digitalWrite(relais_sonnerie,HIGH);Serial.print(" sonnerie on.....");
delay(temps*1000); //secondes*1000 pour avoir des miliSecondes
digitalWrite(relais_sonnerie,LOW);Serial.println(" sonnerie off");
}
//************************************
//**********AFFICHAGE DATE************
//************************************
void affichage_date_en_francais() //affichage de la date en français
{
dt = clock.getDateTime();
byte jours=(atoi(clock.dateFormat("w", dt))); //on affiche le jour en français
Serial.print(JOURS[jours]);Serial.println(clock.dateFormat("d F Y H:i:s", dt)); //puis la date normale
}
//fin programme