1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| const unsigned long deltaMAJ = 86400000UL; // 24h en ms
unsigned long derniereMAJ = -deltaMAJ; // pour forcer une MAJ au démarrage
bool lireDCF77(const unsigned long delaiMax = 1000) { // valeur du timeout par défaut 1s
bool lectureCorrecte = false;
unsigned long debut = millis();
while (!lectureCorrecte && (millis() - debut <= delaiMax)) {
// faire une lecture DCF77
// si elle est réussie, mettre lectureCorrecte à true
// *** à faire ***
}
return lectureCorrecte;
}
void actualiserDS3231() {
// *** à faire ***
}
void miseAJourHeure() {
if (millis() - derniereMAJ >= deltaMAJ) { // on vérifie si c'est le moment de la MàJ
if (lireDCF77()) { // on va lire l'heure DCF77, si ça s'est bien passé
actualiserDS3231(); // on met à jour la RTC (appel bloquant avec un délai qu'on peut passer en paramètre)
}
derniereMAJ = millis(); // on se souvient avoir effectué la demande (même si elle n'a pas aboutie)
}
}
void setup() {
// *** à faire ***
}
void loop() {
miseAJourHeure();
// ici le reste du programme
// *** à faire ***
} |
Partager