Bonjour à tous !
Pour la suite de mon projet j'ai besoin d'avoir l'heure ![]()
Pour cela j'utilise la carte ci dessous :
J'ai suivie le tuto du forum mais je ne comprends pas ou est l'erreur, j'ai bien l'heure exacte ainsi que le jour qui s'affiche au début puis après "pb accées horloge"
j'ai câblé le 5v sur le 5v, le gnd avec le gnd, borne sda avec d1, et borne scl avec d2
Voici le code provenant du forum :
//Exemple 2 : reglage automatique
#include <Wire.h>
#include "simpleRTC.h"
void setup()
{
Wire.begin();
Serial.begin(9600);
Serial.println("Programme exemple 2 : reglage automatique RTC\n");
Serial.print("Date de compil : ");
Serial.println(__DATE__);
uint8_t a, m, j;
extraireDateCompil(__DATE__, &a, &m, &j);
Serial.print("annee=");
Serial.println(a);
Serial.print("mois=");
Serial.println(m);
Serial.print("jour=");
Serial.println(j);
Serial.print("Heure de compil : ");
Serial.println(__TIME__);
uint8_t hh, mm, ss;
extraireHeureCompil(__TIME__, &hh, &mm, &ss);
Serial.print("heure=");
Serial.println(hh);
Serial.print("minute=");
Serial.println(mm);
Serial.print("seconde=");
Serial.println(ss);
if (RTC.regler(a, m, j, hh, mm, ss))
{
Serial.println("Reglage OK");
}
else
{
Serial.println("Probleme acces RTC");
}
Serial.println();
}
void loop()
{
static uint32_t ref = 0;
if (millis() - ref >= 1000)
{
ref += 1000;
if (RTC.actualiser())
{
afficherRTC();
}
else
{
Serial.println("pb acces horloge");
}
}
}
void extraireDateCompil(char dateCompil[], uint8_t *annee, uint8_t *mois, uint8_t *jour)
{
//__DATE__
//The date of translation of the source file: a character string literal of the
//form "Mmm dd yyyy", where the names of the months are the same as
//those generated by the asctime function, and the first character of dd is
//a space character if the value is less than 10. If the date of translation is not
//available, an implementation-defined valid date shall be supplied.
*mois = extraireMois(&dateCompil[0]);
*jour = extraireNombre2Car(&dateCompil[4]);
*annee = extraireNombre2Car(&dateCompil[9]);
}
void extraireHeureCompil(char heureCompil[], uint8_t *heure, uint8_t *minute, uint8_t *seconde)
{
//__TIME__
//The time of translation of the source file: a character string literal of the
//form "hh:mm:ss" as in the time generated by the asctime function. If
//the time of translation is not available, an implementation-defined valid
//time shall be supplied.
*heure = extraireNombre2Car(&heureCompil[0]);
*minute = extraireNombre2Car(&heureCompil[3]);
*seconde = extraireNombre2Car(&heureCompil[6]);
}
uint8_t extraireMois(char chaine[])
{
uint8_t m = 0;
if (chaine[0] == 'J')
{
if (chaine[1] == 'a') m = 1;
else if (chaine[1] == 'u' && chaine[2] == 'n') m = 6;
else if (chaine[1] == 'u' && chaine[2] == 'l') m = 7;
}
else if (chaine[0] == 'F') m = 2;
else if (chaine[0] == 'M')
{
if (chaine[2] == 'r') m = 3;
else if (chaine[2] == 'y') m = 5;
}
else if (chaine[0] == 'A')
{
if (chaine[1] == 'p') m = 4;
else if (chaine[1] == 'u') m = 8;
}
else if (chaine[0] == 'S') m = 9;
else if (chaine[0] == 'O') m = 10;
else if (chaine[0] == 'N') m = 11;
else if (chaine[0] == 'D') m = 12;
return m;
}
uint8_t extraireNombre2Car(char chaine[])
{
return extraireChiffre(chaine[0]) * 10 + extraireChiffre(chaine[1]);
}
uint8_t extraireChiffre(char c)
{
return ('0' <= c && c <= '9') ? c - '0' : 0;
}
void afficherRTC()
{
afficherJourSemaineJJJ(RTC.jourSemaine());
Serial.print(' ');
afficherDateHeure(RTC.annee(), RTC.mois(), RTC.jour(), RTC.heure(), RTC.minute(), RTC.seconde());
Serial.print(" heure d'");
if (RTC.heureEte())
{
Serial.print("ete");
}
else
{
Serial.print("hiver");
}
Serial.print(" (");
afficherDateHeure(RTC.anneeUTC(), RTC.moisUTC(), RTC.jourUTC(), RTC.heureUTC(), RTC.minute(), RTC.seconde());
Serial.println(" UTC)");
}
void afficherJourSemaineJJJ(uint8_t joursem)
{
switch (joursem)
{
case 0 : Serial.print("Dim"); break;
case 1 : Serial.print("Lun"); break;
case 2 : Serial.print("Mar"); break;
case 3 : Serial.print("Mer"); break;
case 4 : Serial.print("Jeu"); break;
case 5 : Serial.print("Ven"); break;
case 6 : Serial.print("Sam"); break;
default : Serial.print("xxx");
}
}
void afficherDateHeure(uint8_t annee, uint8_t mois, uint8_t jour, uint8_t heure, uint8_t minute, uint8_t seconde)
{
afficherDate(annee, mois, jour);
Serial.print(' ');
afficherHeure(heure, minute, seconde);
}
void afficherDate(uint8_t annee, uint8_t mois, uint8_t jour)
{
Serial_print_nn(jour);
Serial.print('/');
Serial_print_nn(mois);
Serial.print("/20");
Serial_print_nn(annee);
}
void afficherHeure(uint8_t heure, uint8_t minute, uint8_t seconde)
{
Serial_print_nn(heure);
Serial.print(':');
Serial_print_nn(minute);
Serial.print(':');
Serial_print_nn(seconde);
}
void Serial_print_nn(uint8_t nombre)
{
if (nombre < 10) Serial.print('0');
Serial.print(nombre);
}
Si quelqu'un à une idée je suis preneur ![]()
Merci :


