Module de mesure du temps

Bonjour à tous, j’apprend la programmation Arduino et le Language c autant dire que je ne suis pas très doués en électronique. Je suis en classe de 5eme et j’aimerais savoir comment résoudre un problème qui m’embarrasse au plus haut point .
J’utilise un Real Time Clock Module qui mesure le temps , seulement voilà , lorsque je rentre dans une boucle qui va exécuter des actions, le module s’arrête de compter le temps et repart une fois la boucle terminée. Pouvez vous m’aider à résoudre ce problème ?
Et ce n’est pas tout ! Lorsque je coupe l’alimentation électrique , le module perd la date et recommence par défaut à celle du début (lorsque j’ai televerser le programme). J’ai lu que il y avait une pile pour les pannes de courant et j’ai mesurer sa tension qui est bonne ! Y’a il un moyen pour que le module continue à compter le temps ! Je vous remercie pour vos réponses (clair et détaillées si possible :))
Bonne journée à vous !

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Bonjour jul29j

Quel type de RTC utilises tu? Mets un lien.
Mets ton programme sur le forum, attention à utiliser les balises.
image

Cordialement
jpbbricole

Bonjour et merci pour votre réponse , je vous donne les références de mon module RTC : «Module DS3231 RTC » . Mon code est très très long et très très dur à lire car j’ai connecté beaucoup de composants alors je vous l’ai simplifié :

``

Texte préformaté``//www.elegoo.com
//2018.10.24
#include <Wire.h>
#include <DS3231.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
DS3231 clock;
RTCDateTime dt;

void setup()
{
  Serial.begin(9600);
lcd.begin(16, 2);
  
 
  // Initialize DS3231
  clock.begin();
Serial.print(""); 
  
  // Manual (YYYY, MM, DD, HH, II, SS
  // clock.setDateTime(2016, 12, 9, 11, 46, 00);
  
  // Send sketch compiling time to Arduino
  clock.setDateTime(__DATE__, __TIME__);    
  /*
  Tips:This command will be executed every time when Arduino restarts. 
       Comment this line out to store the memory of DS3231 module
  */
}

void loop()
{
  dt = clock.getDateTime();

  // For leading zero look to DS3231_dateformat example
// lcd.print(dt.year); lcd.print("-"); 
// lcd.print(dt.day);    lcd.print("-"); lcd.print(dt.month);  lcd.print("");
  Serial.print("");
  Serial.print(dt.year);   Serial.print("-");
  Serial.print(dt.month);  Serial.print("-");
  Serial.print(dt.day);    Serial.print(" ");
  Serial.print(dt.hour);   Serial.print(":");
  Serial.print(dt.minute); Serial.print(":");
  Serial.print(dt.second); Serial.println("");

  
   lcd.setCursor(0, 1);
    lcd.print(dt.hour);   lcd.print(":");
  lcd.print(dt.minute); lcd.print(":");
  lcd.print(dt.second); lcd.print(" ");
    
 lcd.print(dt.day);    lcd.print("-"); lcd.print(dt.month); lcd.print("-");lcd.print("22");
   
 lcd.print("                    ");
}

Bonjour jul29j

Est ce que ce code simplifié provoque la même erreur:

sinon, mets le code en entier.
Autre remarque, cette ligne:

doit être commentée, sinon, au démarrage, ta RTC prendra l'heure de la dernière compilation.
Il faut utiliser cette ligne uniquement si la RTC a perdu l'heure.

Cordialement
jpbbricole

Le problème avec cette ligne, c'est qu'il existe plusieurs bibliothèques qui ont le même nom. Donc on ne peut pas savoir laquelle est utilisée : il faudrait un lien github ou le nom de l'auteur.
Cette bibliothèque a sûrement des exemples : comment se comporte le montage avec ces exemples ? Vois-tu les mêmes symptômes ?

  1. le code simplifier provoque exactement les mêmes erreurs mais cela dit , pour la ligne qu’il faut commenter je vais voir si ça marche, merci en tout cas !
  2. pour la bibliothèque « je ne pense pas » qu’il y est un problème car il est issu du kit ELEGOO sur Amazon . Mais si j’ entre le code ci dessus dans chacune des boucles est ce que ça « peut » fonctionner ? Je sais , mon programme sera d’autant plus laid mais bon je ne compte le faire lire a personne ! Merci en tout cas !!

Bonjour jul29j

J'ai testé ton programme simplifié (sauf l'affichage, je n'ai que des affichages en i2C :frowning: ) avec la bibliothèque du kit:
##Read Me First\Copy Me First\DS3231 dont la source est ici.
et je n'arrive pas à trouver quel est ce problème, pour moi la boucle fonctionne très bien.

Cordialement
jpbbricole

Bonjour jpbbricole, ça y est ! J’ai compris d’où venait mon problème ! C’est simplement que le module ne s’arrête pas de compter mais ne l’affiche pas pendant la boucle je vous remercie tous pour vos réponses !
Cordialement, jul29j.
Et merci encore !!

Bonjour jul29j

Super!
N'oublies pas la ligne
//clock.setDateTime(__DATE__, __TIME__); :wink:

Bonne continuation et belle journée à toi.

Cordialement
jpbbricole

Pour ma part, je mets cette ligne dans un programme séparé, qui ne fait que ça : mettre l'horloge à l'heure.
Si l'horloge a dérivé, je lance ce petit prog, puis ensuite je recharge le programme applicatif.

1 Like

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