Problème RCT 1307

Bonjour a tous/toute
Je vous contacte aujourd’hui car je suis dans l’impasse, je suis sur un projet actuel, de recevoir l’heure sur un afficheur LCD I2C Grove avec un RTC I2C horloge temps réel DS1307

Cependant je suis dans l’impasse, je doit paramétrer l’heure de l’horloge en gros l’initialiser avec des boutons.
J’ai donc pris 2 boutons pour régler l’heure comme sur un radio réveil, lorsque je souhaite appuyer dessus le temps défile, bref…

J’ai essayer tout d’abord de mettre l’heure sur l’afficheur avec le code ci dessous

#include <Wire.h>
#include "RTClib.h"
#include "rgb_lcd.h" // LLibrairie lcd i2c
RTC_DS1307 rtc;

const int colorR = 53;
const int colorG = 255;
const int colorB = 36;

int Annee = 2020;
int mois = 1;
int jour = 30;
int heure = 9;
int minutes = 40;
int secondes = 20;

rgb_lcd lcd; // Afficheur lcd i2c



void setup() {
   lcd.begin(16, 2);
   Serial.begin(9600);
   lcd.setRGB(colorR, colorG, colorB);
   rtc.begin();
   

  if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running!");
    rtc.adjust(DateTime(Annee, mois, jour, 9, 12, 0));
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }

}

void loop() {
 DateTime time = rtc.now();


 {
   ///////////////////////////////////////////////////////////////////////////////////////
   //  Partie écriture afficheur lcd                                                    //
   ////////////////////////////////////////////////////////////////////////////////////// 


   lcd.clear();
   DateTime now = rtc.now();
   lcd.setCursor (0,0);
   
   lcd.print(Annee, DEC); // écriture de l'année
   lcd.print('/');
   lcd.print(mois, DEC); // écriture du mois
   lcd.print('/');
   lcd.print(jour, DEC); // écriture du jour
   
   lcd.setCursor(0,1);
   lcd.print(now.hour(), DEC); // écriture de l'heure
   lcd.print(':');
   lcd.print(now.minute(), DEC); // écriture des minutes
   lcd.print(':');
   lcd.print(now.second(), DEC); // écriture des secondes
   lcd.println();
   
   ///////////////////////////////////////////////////////////////////////////////////////
   //  Partie Communication série                                                       //
   //////////////////////////////////////////////////////////////////////////////////////  
   Serial.print(Annee, DEC); // écriture de l'année
   Serial.print("/");
   Serial.print(mois, DEC); // écriture du mois
   Serial.print("/");
   Serial.print(jour, DEC); // écriture du jour
   Serial.print("/");
   Serial.print(now.hour(), DEC); // écriture de l'heure
   Serial.print("/");
   Serial.print(now.minute(), DEC); // écriture des minutes
   Serial.print("/");
   Serial.print(now.second(), DEC); // écriture des secondes
   Serial.print("/");
   Serial.println();

  
}
}

Cependant l’heure ne veux pas se mettre comme je le souhaite, il me fait pas défiler le temps lorsque je met ceci:

lcd.print(minutes, DEC); // écriture des minutes

Il reste figé, je n’arrive donc pas a faire défiler l’heure, quelqu’un pourrait-il m’aider ? merci beaucoup et d’avance ^^ :slight_smile:

hello
j’ai regardé ton code…

regardes déjà comment fonctionne celui ci
puis tu adapteras ton lcd puis ton reglage manuel

tu as le lien de la librairie dans le code

#include <Wire.h>
#include <TimeLib.h>
#include "DS1307RTC.h"
// https://github.com/PaulStoffregen/DS1307RTC
const char *monthName[12] = {
  "Jan", "Feb", "Mar", "Apr", "May", "Jun",
  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};

tmElements_t tm;

void setup() {
  bool parse=false;
  bool config=false;

  // get the date and time the compiler was run
  if (getDate(__DATE__) && getTime(__TIME__)) {
    parse = true;
    // and configure the RTC with this info
    if (RTC.write(tm)) {
      config = true;
    }
  }

  Serial.begin(115200);
  while (!Serial) ; // wait for Arduino Serial Monitor
  delay(200);
  if (parse && config) {
    Serial.print("DS1307 configured Time=");
    Serial.print(__TIME__);
    Serial.print(", Date=");
    Serial.println(__DATE__);
  } else if (parse) {
    Serial.println("DS1307 Communication Error :-{");
    Serial.println("Please check your circuitry");
  } else {
    Serial.print("Could not parse info from the compiler, Time=\"");
    Serial.print(__TIME__);
    Serial.print("\", Date=\"");
    Serial.print(__DATE__);
    Serial.println("\"");
  }
}

void loop() {
}

bool getTime(const char *str)
{
  int Hour, Min, Sec;

  if (sscanf(str, "%d:%d:%d", &Hour, &Min, &Sec) != 3) return false;
  tm.Hour = Hour;
  tm.Minute = Min;
  tm.Second = Sec;
  return true;
}

bool getDate(const char *str)
{
  char Month[12];
  int Day, Year;
  uint8_t monthIndex;

  if (sscanf(str, "%s %d %d", Month, &Day, &Year) != 3) return false;
  for (monthIndex = 0; monthIndex < 12; monthIndex++) {
    if (strcmp(Month, monthName[monthIndex]) == 0) break;
  }
  if (monthIndex >= 12) return false;
  tm.Day = Day;
  tm.Month = monthIndex + 1;
  tm.Year = CalendarYrToTm(Year);
  return true;
}

NOTA: il n’y a plus que l’éducation nationale pour utiliser des 1307

tu aurais du préciser dans le titre que c’est un projet scolaire