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