Bonjour,
Pour un projet j'ai acheté une rtc ds1307 I2C, la pile est chargée normalement et elle fonctionnait très bien avant.
Mais j'ai réessayé il y a 5min de lire l'heure et le moniteur série m'affiche à chaque fois 0:0:0, et je suis obligé de décommenter la ligne de code rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));à chaque fois pour la remettre à l'heure.
Quand je débranche l'USB, l'heure se fige sur celle qu'il avait quand il était connecté au pc, je dois donc mettre le programme qui le remet à l'heure pour réactualiser l'heure.
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup () {
while (!Serial); // for Leonardo/Micro/Zero
Serial.begin(57600);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
void loop () {
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(3000);
}
C'est bizarre parce que normalement la pile est censé laisser l'heure tourner sur le module...
J'avais acheté 2 horloges DS1307. Toutes les 2 ont le même problème : elle perdent l'heure quand l'Arduino n'est plus alimenté. Et bien que les piles soient correctes.
J'ai laissé tombé et acheté des DS3231. Plus de problème.
DS3231 est une solution ? Je vais me renseigner mais ça me parait pas normale que ce composant ne fonctionne pas, c'est sensé être un minimum fiable...
La pile est placée dans le bon sens ?
Oui, et j'ai vérifié sa tension plusieurs fois, c'est une pile de 3v et la tension est bien de 3v
Selon les expériences un DS1307un module à base de DS1307 fonctionne ou ne fonctionne pas sans pile, fonctionne ou ne fonctionne pas avec une pile usagée.
Ce n'est pas le circuit DS1307 qui est en cause. Certes il dérive plus que le DS3231 parce que son principe de fonctionnement est plus ancien mais la différence s’arrête là.
Ce qui est en cause c'est sa mise en œuvre avec le choix du quartz et l'adaptation du quartz.
Il existe des modules fabriqués par des personnes compétentes et d'autres par des sagouins qui croient qu'il suffit de copier le travail des autres mais la réalité réserve des (mauvaises) surprises.
C'est pour cela qu'il faut abandonner ce modèle et passer au DS3231 où tout est incorporé (et maitrisé) dans le boitier par le fabricant Maxim.
Comment veut-tu qu'on le sache sans avoir essayé !
Banggood c'est comme amazon, Ebay, ali express ou Cdiscount ce n'est pas eux qui fabriquent.
Par contre ce que je peux dire c'est que j'utilise des modules DS3231 payé 5 fois moins cher sur Ebay (rendus boîte à lettre) et qui fonctionnent parfaitement et dont les photos sont étrangement ressemblantes a celle de ton lien.
Il faut savoir : Ebay c'est un bon mois de livraison.