mise à jour du temps dans le module RTS3231

Salut

je finis mon projet, j'ai un probleme quand je veux corriger le temps, je m'explique : - à la mise sous tension l'affichage indique minuit 00:00 ... logique - je modifie le temps via des bouton ... la modification prends effet ... correct - au redémarrage de la loop, je reviens au temps de départ ... minuit (00:03 ... la loupe dure 3 minutes)

j'ai surement oublier quelques chose, sachant que j'avais pas ce problème avec le DS1307 ... bizarre

à priori c'est l'information dans la mémoire du 3231 qui n'est pas modifier ... même si j'utilise la commande : setTime(varHr, varMin, 0, 0, 0, 0); après chaque modification ... bizarre

hello au televersement: clock.setDateTime(DATE, TIME);//

ou en cours de prog byte TabMaH[6] = {17, 10, 22, 20, 14, 50}; RTC.adjust(DateTime(TabMaH[0],TabMaH[1],TabMaH[2],TabMaH[3],TabMaH[4],TabMaH[5]));

Merci pour votre réponse

donc mon code actuelle, le code de modification du l’heure :

void set_time() {

  hora = hour();
  minuto = minute();
  unidadeHora = hora % 10;
  dezenaHora = hora / 10;
  unidadeMinuto = minuto % 10;
  dezenaMinuto = minuto / 10;



   for (int i = 0; i < 8; i++)  
  {
    lc.setRow(0,i,font1[dezenaHora][i]);
  }
delay(delayTime);

 for (int i = 0; i < 8; i++)  
  {
    lc.setRow(1,i,font1[unidadeHora][i]);
  }
delay(delayTime);

  for (int i = 0; i < 8; i++)  
  {
    lc.setRow(2,i,font1[dezenaMinuto][i]);
  }
delay(delayTime);

  for (int i = 0; i < 8; i++)  
  {
    lc.setRow(3,i,font1[unidadeMinuto][i]);
  }
delay(delayTime);


  // check if the pushbuttonH  is pressed.
  buttonStateH = digitalRead(buttonPinH);

  if (buttonStateH == HIGH) {
    t = now();
    varHr = hour(t);
    varMin = minute(t);
    varHr++;   //add 1 hour from the current time
    setTime(varHr, varMin, 0, 0, 0, 0);

    delay (200);
  }
  buttonStateS = digitalRead(buttonPinS);

  // check if the pushbuttonM  is pressed.
  buttonStateM = digitalRead(buttonPinM);

  if (buttonStateM == HIGH) {
    t = now();
    varHr = hour(t);
    varMin = minute(t);
    varMin++;   //add 1 minute from the current time
    setTime(varHr, varMin, 0, 0, 0, 0);

    delay (200);
  }

  buttonStateS = digitalRead(buttonPinS);


}

donc je remplace le

setTime(varHr, varMin, 0, 0, 0, 0);

par

RTC.adjust(DateTime(varHr, varMin, 0, 0, 0, 0));

OK … je teste

j’ai cette erreur au niveau de la compilation :

"error: ‘class DS3232RTC’ has no member named ‘adjust’

RTC.adjust(DateTime(varHr, varMin, 0, 0, 0, 0));"

j’utilise cette librairie

#include <DS3232RTC.h>   //Real Time Clock Library

c’est pas la bonne librairie ?

hello suis en 1612

la lib que j’utilise

RTClib.zip (15.9 KB)

Bonjour,

J'utilise le début de programme suivant pour configurer l'heure et la date dans le DS3231.

#include "Wire.h"
#define DS3231_I2C_ADDRESS 0x68
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
  return( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
  return( (val/16*10) + (val%16) );
}
void setup()
{
  Wire.begin();
  Serial.begin(9600);
  // set the initial time here:
  // DS3231 seconds, minutes, hours, day, date, month, year
   //setDS3231time(00,19,17,1,12,11,17);
}
void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte
dayOfMonth, byte month, byte year)
{
  // sets time and date data to DS3231
  Wire.beginTransmission(DS3231_I2C_ADDRESS);
  Wire.write(0); // set next input to start at the seconds register
  Wire.write(decToBcd(second)); // set seconds
  Wire.write(decToBcd(minute)); // set minutes
  Wire.write(decToBcd(hour)); // set hours
  Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
  Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
  Wire.write(decToBcd(month)); // set month
  Wire.write(decToBcd(year)); // set year (0 to 99)
  Wire.endTransmission();
}

Il faut donc activer la commande "setDS3231time(00,19,17,1,12,11,17);" en enlevant les 2 barres obliques pour que le DS3231 enregistre les changements lors du téléversement dans l'Arduino.

Par contre il faut enregistrer une deuxième fois le même programme dans l'Arduino mais en ayant soin de déactiver la même commande avant le téléversement.

Le 3231 devrait maintenant garder le bon temps à condition évidemment qu'il ait une batterie de secours en cas d'une panne.

J'espère que ceci pourra aider.

Merci a vous tous

j'essai de comprendre et d'adapter toutes ces infos dans mon code .. j’espère que ça va fonctionner

et je confirme .. la solution de duino_nano marche impec .. marche pas ... je continue mes recherche

Merci ;)

je commence à croire que les 3231 que j'ai sous la main sont défectueux :/

je suis bloquer a ce niveau

j’essai de récupérer des info du 3231 avec cette commande :

j’utilise le “RTClib.h”

mes commandes actuelles sont :

   t = rtc.now();
   varHr = hour(t);
   varMin = minute(t);

mais j’ai un message d’erreur

ensuite je veux modifier les minutes et les heures et uploder cette modification au niveau de la mémoire du 3231 avec cette commande :

    t = rtc.now();
    varHr = hour(t);
    varMin = minute(t);
    varMin++;   //add 1 minute from the current time
    RTC.adjust(DateTime(varHr, varMin, 0, 0, 0, 0));

marche pas

J’utilise cette bibliothèque. Ca fonctionne sans problème.

Cordialement.

Pierre

ChPr:
J’utilise cette bibliothèque. Ca fonctionne sans problème.

Cordialement.

Pierre

et qu’elles sont les commandes que tu utilises pour récupérer et modifier les heures et les minutes ?

Merci

esloch:
et qu’elles sont les commandes que tu utilises pour récupérer et modifier les heures et les minutes ? …

Si vous avez chargé cette bibliothèque, vous aurez lu dans sa documentation qu’il suffit de déclarer :

#include <DS3231.h>

DS3231 rtc(SDA, SCL);

Time monTemps;

puis, d’appeler

rtc.getTime(); // pour récupérer dans "monTemps" l'année, le mois, le jour, l'heure, les minutes et les secondes

rtc.setDate(monAnnee, monMois); // pour enregistrer les paramètres de la date

rtc.setTime(votreHeure, votreMinute, votreSeconde); // pour enregistrer les paramètres horaires

Cordialement.

Pierre

bonjour j’utilise des 3231 sans problème.

voici le croquis ( en pièce jointe + de 9000 caractères) de l’horloge source F5MNA que j’ai un peu modifié.

tu verras comment il fait la mise à jour des données jour mois année puis heure minutes seconde.
Bonne arduinade.

horloge_SOFTPOP.zip (2.5 KB)