[RÉSOLU] DS3231 en français

bonjour j'ai un RTC DS3231 qui fonctionne très bien
et peut afficher ceci :
12:37:10
07/09/2017
September ( en anglais)
Jeudi ( en français après conversion fait maison )

ce que j'aimerai pouvoir afficher pour la date, c'est :

Jeudi 07 septembre 2017

bon j'ai déjà réussi à avoir le nom du jour en français mais pas le mois et encore moins sous le
format que je veux

j'ai regardé un peu partout mais tout est en format anglais

une idée ?

Bonjour,

Peut tu poster le code ?

Bonjour
Le DS3231 est un composant qui renvoie simplement des valeurs numeriques interpretables
l'affichage "utilisateur" en une langue ou une autre est "traité" par programmation.

donc quel code utilise tu ?

Edit : -Standby etait en vigie :grin:

Il s’agit d’une librairie SD3231.h de 2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
// web: http://www.RinkyDinkElectronics.com/
et voici mon programme qui exploite cette librairie

#include <DS3231.h>
#include <LiquidCrystal.h>


DS3231  rtc(SDA, SCL);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

char NOM_J;
char J1="Monday";
char J2="Tuesday";
char J3="Wednesday";
char J4="Thursday";
char J5="Friday";
char J6="Saturday";
char J7="Sunday";

char NOM_M;


void setup() {
 
  rtc.begin();
  lcd.begin(20, 4);

  
}

void loop()  {
  // l'heure 
  lcd.setCursor(0, 0);
  lcd.print(rtc.getTimeStr());

  // la date 
  lcd.setCursor(0, 1); 
  lcd.print(rtc.getDateStr(FORMAT_SHORT,FORMAT_LITTLEENDIAN,'/'));
  NOM_M = (rtc.getDateStr());
 


// nom du mois 
  lcd.setCursor(0, 2); 
  lcd.print(rtc.getMonthStr(FORMAT_SHORT));
  //lcd.setCursor(10, 2); 
  
  // nom du jour 
  NOM_J = (rtc.getDOWStr());
  lcd.setCursor(0,3);
   if (NOM_J == J1) lcd.print("Lundi   ");
   if (NOM_J == J2) lcd.print("Mardi   ");
   if (NOM_J == J3) lcd.print("Mercredi");
   if (NOM_J == J4) lcd.print("Jeudi   ");
   if (NOM_J == J5) lcd.print("Vendredi");
   if (NOM_J == J6) lcd.print("Samdi   ");
   if (NOM_J == J7) lcd.print("Dimanche");



 
delay(1000);
lcd.clear();


  
  }

Bonjour Pilou,

C'est à toi de faire le code nécessaire avec la donnée day_of_week (ou similaire) qui est un chiffre de 1 à 7, avec le 1 pour le Lundi...

C'est facile et ludique :slight_smile:

Bon test,
Jean-Nono

question pour Artouste
Comment relever les valeurs numériques interprétables ???? avec quelle instruction

(rtc.getDateStr()); me donne 07.09.2017
(rtc.getMonthStr()); me donne september
(rtc.getTimeStr()); me donne 15:43:15
(rtc.getDOWStr()); me donne thursday

mais celà ne me permet pas de faire jeudi 07 septembre 2017

et qui peut m'expliquer cela :

" Structure to manipulate time- and date-data.
variables; hour, min, sec: for holding time-data
date, mon, year for holding date-data
dow: day-of-the-week with Monday being the first day

Usage: Time t; // define a structure named t of the Time-class

j'ai le préssentiment que la réponse est là mais avec quelle syntaxe

rtc.getTime.t.hour()); ????????? quelque chose comme ça
bon c'est pas la bonne syntaxe car lors de la compile le message suivant s'affiche

: getTime' does not have class type

Il faudrait que tu lises la datasheet du DS3231 à télécharger sur le site de son fabricant : Maxim.

Ce circuit est très simple.
Il suffit de lire différents registres en utilisant l'I2C.

Il y a 1 registre de 8 bits pour l'heure, un autre pour les minutes, un pour les secondes,.......,un pour le mois, pour l'année etc etc.

Pour savoir comment les lre tu peux trouver des bibliothèques pour DS3231 et les ouvrir pour voir comment faire.
Il existe des bibliothèques bien compliquées et d'autres bien plus simples qui sont ultra suffisantes.

Je n'ai rien avec moi pour le moment, mais si tu peux attendre quelques jours j'ai quelques fonctions très simples.

pilou8830:
j'ai le préssentiment que la réponse est là mais avec quelle syntaxe

rtc.getTime.t.hour()); ????????? quelque chose comme ça

Bonjour,

La syntaxe est

rtc.getTime().hour;

Tu peux aussi faire:

Time t=rtc.getTime();
int heure=t.hour;

comme dit JeanNono38 tu peux afficher en français avec un petit bout de code. Par exemple pour le jour de la semaine

  const char *strDays[]  = {"Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"};
  lcd.print(strDays[rtc.getTime().dow-1]);

Tu peux aussi modifier la librairie pour mettre les textes en français (c'est en général déconseillé de modifier les librairies)
Tu peux aussi créer ta propre class en la dérivant de la class DS3231 et en surchargeant les fonctions getDOWStr() et getMonthStr()

je crois que j'ai trouvé une librairie qui me permet de lire chaque chose séparément (heure, minute, sec, année, jour, mois etc. avec Clockget...

je vous dirais quoi quand je pourrai vous donner les résultats
Merci

La librairie que j'utilise est ultra simple, je pense que c'est celle ci, en vrac dans le fichier zip, dans le dossier libraries. De toutes façons, je pense que son fonctionnement doit être expliqué (en anglais certe...) dans le pdf dans le premier dossier. Tu peux toujours essayer (avant de l'enregistrer dans l'ide, vérifie quand même que c'est pas celle que t'a déjà :wink: ). Normalement ça devrais marcher ; à essayer.

Bonsoir,

Il existe une librairie appelée ds3231. Très simple et que j'utilise pour mes codes sans problème.

Il y a tout : date, mois, année, jour de la semaine ect ...

Bon amusement.

pilou8830:
je crois que j'ai trouvé une librairie qui me permet de lire chaque chose séparément (heure, minute, sec, année, jour, mois etc. avec Clockget...

Tout comme la librairie DS3231 que tu utilises ??? (lire la date et l'heure c'est quand même la moindre des choses qu'on puisse demander à une librairie RTC)

J’ai trouvé cette librairie DS3231.h de :

Library to communicate with Maxim’s DS3231 high-precision real-time clock (RTC)

Eric Ayars DS3231 library with JeeLabs/Ladyada’s RTC libraries spliced in by
Andy Wickert

Released into the public domain by Jeelabs, Ladyada, and Eric Ayars; public
domain release maintained by Andy Wickert

voila ce que cela donne

Vendredi
08 Septembre 17
08:53:25
23,25 C

#include <LiquidCrystal.h>

#include <DS3231.h>
#include <Wire.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
DS3231 Clock;
bool Century=false;
bool h12;
bool h24;
bool PM;
byte ADay, AHour, AMinute, ASecond, ABits; // Alarm
bool ADy, A12h, Apm;  // Alarm



void setup() {
  Wire.begin();
  lcd.begin(20,4);
  
}

void loop() {

  lcd.setCursor(0,0);
  // nom du jour
  switch (Clock.getDoW())
  { case 1: lcd.print("Lundi   "); break; 
    case 2: lcd.print("Mardi   "); break; 
    case 3: lcd.print("Mercredi"); break; 
    case 4: lcd.print("Jeudi   "); break; 
    case 5: lcd.print("Vendredi"); break; 
    case 6: lcd.print("Samdi   "); break; 
    case 7: lcd.print("Dimanche"); break;
    }

   // jour
   lcd.setCursor(0,1);
    if (Clock.getDate() <10){ 
    lcd.print("0");
    }  
      
  lcd.print(Clock.getDate(), DEC);
  lcd.print(" ");

  // mois
  switch (Clock.getMonth(Century))
  { case 1:  lcd.print("Janvier"); break; 
    case 2:  lcd.print("Fevrier"); break; 
    case 3:  lcd.print("Mars"); break; 
    case 4:  lcd.print("Avril"); break; 
    case 5:  lcd.print("Mai"); break; 
    case 6:  lcd.print("Juin"); break; 
    case 7:  lcd.print("Juillet"); break;
    case 8:  lcd.print("Aout"); break; 
    case 9:  lcd.print("Septembre"); break; 
    case 10: lcd.print("Octobre"); break; 
    case 11: lcd.print("Novembre"); break; 
    case 12: lcd.print("Decembre"); 
    }
    
  lcd.print(" ");
  lcd.print(Clock.getYear(), DEC);

   // Heure
   lcd.setCursor(0,2);
    if (Clock.getHour(h24,PM) <10){ 
    lcd.print("0");
     }  
   lcd.print(Clock.getHour(h24,PM), DEC);
   lcd.print(":");
   
    // Minute
    if (Clock.getMinute() <10){ 
    lcd.print("0");
    }  
    lcd.print(Clock.getMinute(), DEC);
    lcd.print(":");

    // Seconde
    if (Clock.getSecond() <10){ 
    lcd.print("0");
    }  
    lcd.print(Clock.getSecond(), DEC);
    lcd.print("   ");

    // Temperature en degré celsius
   lcd.setCursor(0,3);
   lcd.print(Clock.getTemperature(), 2);
   lcd.print(" C");
    
}

comme je débute toute critique est la bienvenue

pilou8830:
comme je débute toute critique est la bienvenue

Et bien, tu aurais pu mettre le lien vers la libraire par exemple ;D .

je ne sais pas marquer le sujet comme résolu comment faire

Merci à tous

Voici le lien de la librairie que j'utilise

Merci à tous