DS1307 + Afficheur 1602A

Bonjour à tous.
Je suis nouveau sur le forum.
Je travaille sur un programme qui va permettre de gérer en température et hygrométrie un terrarium . J'utilise un Arduino UNO
Le programme est bien avancé, mais il me reste un point qui me bloque, c'est la gestion de l'heure.
J'ai un module DS1307 avec un afficheur 1602A (j'attend un 2004A), je fais bien apparaitre la date et l'heure sur l'afficheur, mais l'heure est bloquée sur celle du téléchargement.
Avez-vous une idée du problème?
Je suis cablé en I2C.

Merci pour votre retour

Bonsoir et bienvenue,

Merci de prendre quelques minutes pour lire les bonnes pratiques du forum francophone et de les appliquer.

Mets ton code dans le message.
Mais on peut supposer que tu as laissé dans le setup() la ligne qui initialise le DS1307 avec l'heure de la compilation du code.

A noter, on encourage pas trop l'usage du DS1307 qui dérive pas mal dans le temps, on conseille plutôt d'utiliser le DS3231 qui est très stable.

En effet, voici le code en question.
Je suis d'accord avec toi, mais je n'arrive pas à voir la ligne en question

#include <Wire.h>    // Bibliothèque pour l'I2C
#include "RTClib.h"  // Bibliothèque pour le module RTC
#include <LiquidCrystal_I2C.h> // Bibliothèque pour l'écran

RTC_DS1307 RTC;      // Instance du module RTC de type DS1307
  LiquidCrystal_I2C lcd(0x27, 16,2); ////Instance d'écran

void setup(void) {
  //Initialisation de l'écran
  lcd.begin(16,2);
  lcd.clear();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.setCursor(0, 1);
  
  // Initialise la liaison I2C  
  Wire.begin();
  
  // Initialise le module RTC
  RTC.begin();
 
  //Initialise la date et le jour au moment de la compilation 
  // /!\ /!\ Les lignes qui suivent sert à définir la date et l'heure afin de régler le module, 
  // pour les montages suivant il ne faut surtout PAS la mettre, sans à chaque démarrage 
  // le module se réinitialisera à la date et heure de compilation
  
  DateTime dt = DateTime(__DATE__, __TIME__);
  RTC.adjust(dt);
  
  // /!\
  ////////////////////////////////////////////////////////////////////////////////////////////
}

void loop()
{ 
  DateTime now=RTC.now(); //Récupère l'heure et le date courante  
  
  affiche_date_heure(now);  //Converti la date en langue humaine

  delay(2000); // delais de 1 seconde
}

//Converti le numéro de jour en jour /!\ la semaine commence un dimanche
String donne_jour_semaine(uint8_t j)
{ 
  switch(j)
  {
   case 0: return "DIM";
   case 1: return "LUN";
   case 2: return "MAR";
   case 3: return "MER";
   case 4: return "JEU";
   case 5: return "VEN";
   case 6: return "SAM";
   default: return "   ";
  }
}

// affiche la date et l'heure sur l'écran
void affiche_date_heure(DateTime datetime){
  
  // Date 
  String jour = donne_jour_semaine(datetime.dayOfTheWeek()) + " " + 
                Vers2Chiffres(datetime.day())+ "/" + 
                Vers2Chiffres(datetime.month())+ "/" + 
                String(datetime.year(),DEC);
  
  // heure
  String heure = "";
  heure  = Vers2Chiffres(datetime.hour())+ ":" + 
           Vers2Chiffres(datetime.minute())+ ":" + 
           Vers2Chiffres(datetime.second());

  //affichage sur l'écran
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(jour);
  lcd.setCursor(0, 1);
  lcd.print(heure);
}

//permet d'afficher les nombres sur deux chiffres
String Vers2Chiffres(byte nombre) {
  String resultat = "";
  if(nombre < 10)
    resultat = "0";
  return resultat += String(nombre,DEC);  
}

Il faut mettre les 2 lignes ci-dessous en commentaire.

Pas de changement, l'heure reste bloquée

L'heure ne change pas ou tu redémarres toujours à la même heure?
Tu as bien une batterie pour sauvegarder l'heure?

L'heure reste figée sur l'écran.
Elle garde l'heure du chargement, les secondes n'évoluent pas.

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