Perte date et heure DS3231

Bonjour à tous,
Je débute avec Arduino et je rencontre un problème.
Lorsque je débranche mon (horloge) et que je la rebranche je reviens à la date et heure du jour ou j'ai téléversé mon code.
Je pensais que c'était lié à ma pile mais non je l'ai changé et le souci reste
Je vous mets celui-ci.

/* 
* Créé par ArduinoGetStarted.com 
* 
* Cet exemple de code est dans le domaine public 
* 
* Page du didacticiel : https://arduinogetstarted.com/tutorials/arduino-lcd-clock 
*/
//Utilisation des bibliotèques
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <DateTimeFunctions.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);  // Adresse I2C 0x27  16 colonnes et 2 lignes
RTC_DS3231 rtc;                      //Déclaration du module  DS3231

void setup() {
  Serial.begin(9600);  // initialiser le moniteur série
  lcd.begin();         // initialiser l'écran LCD
  lcd.backlight();     // ouvrir le rétroéclairage
  // Confiruration du module
  if (!rtc.begin()) {
    lcd.setCursor(0, 0);  //Curseur sur la première position et sur la ligne 0
    lcd.print("RTC introuvable !!!");
    Serial.print("RTC introuvable !!!");
    //Serial.flush();
    while (true)
      ;
  }
  // définit automatiquement le RTC sur la date et l'heure sur le PC où ce croquis a été compilé
  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}

void loop() {
  /*----------------------------------------------------------------------*/
  /*                 Affichage de la date et l'heuredans le LCD           */
  /*----------------------------------------------------------------------*/
  //Utilisation de la fonction DateTime de la librairie DateTimeFunctions.h
  DateTime aujourd_hui = rtc.now();    //Attribution du jour et de l'heure
  int annee = aujourd_hui.year();      //Année
  int mois = aujourd_hui.month();      //Mois
  int jour = aujourd_hui.day();        //Jour
  int heure = aujourd_hui.hour();      //Heure
  int minute = aujourd_hui.minute();   //Minute
  int seconde = aujourd_hui.second();  //Seconde
  //J'efface le contenu éventuel du LCD
  lcd.clear();
  lcd.setCursor(0, 0);  //Curseur sur la première position et sur la ligne 0
  lcd.print("Date: ");
  //Affichage du jour 01
  if (jour < 10) {
    lcd.print("0");
    lcd.print(jour);  //Formatage de la date en FR jour / mois / année
    Serial.println(jour);
  } else {
    //Affichage du jour 31
    lcd.print(jour);  //Formatage de la date en FR jour / mois / année
    Serial.println(jour);
  }
  lcd.print("/");
  if (mois < 10) {
    //Affichage du mois 01
    lcd.print("0");
    lcd.print(mois);
  } else {
    //Affichage du mois 12
    lcd.print(mois);
  }
  lcd.print("/");
  //Affiche l'année
  lcd.print(annee);
  lcd.setCursor(1, 1);  //Curseur sur la ligne 1 en deuxième position
  lcd.print("Heure: ");
  lcd.setCursor(7, 1);  //Curseur sur la ligne 1 en position 7
  if (heure < 10) {
    //Affichage de l'heure 01
    lcd.print("0");
    lcd.print(heure);
  } else {
    //Affichage de l'heure 24
    lcd.print(heure);
  }
  lcd.print(":");
  if (minute < 10) {
    //Affichage des minutes 01
    lcd.print("0");
    lcd.print(minute);
  } else {
    //Affichage des minutes 59
    lcd.print(minute);
  }
  lcd.print(":");
  //Affichage des secondes 01
  if (seconde < 10) {
    lcd.print("0");
    lcd.print(seconde);
  } else {
    //Affichage des secondes 59
    lcd.print(seconde);
  }
  delay(1000);  //Actualisation toutes les seconde
  /*----------------------------------------------------------------------*/
  /*                Fin d'affichage de la date et l'heure dans le LCD      */
  /*----------------------------------------------------------------------*/
}

Merci pour l'aide que vous pouriez m'apporter
Jean-Marc

Il faut mettre cette ligne pour faire la mise à l'heure la première fois.
Ensuite, il faut la mettre en commentaire et recharger le programme qui utilisera alors l'heure qui a été sauvegardée dans la DS3231.

Bonjour,
C'est aussi simple que ça :slight_smile: merci.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.