[Non réglé] Horloge temps réel bloquée

Bonjour à tous!
Merci de prendre la peine de lire mon problème...

Dans le cadre d'un projet au lycée, j'ai été amenée avec mes petits camarades à acheter le sablier disponible chez Snootlab
http://snootlab.com/shields-snootlab/203-le-sablier-fr.html

On l'a soudé, utilisé la librairie disponible ici:

Sauf qu'on doit faire quelque chose de mal, parce qu'au moment d'afficher l'heure celle-ci ne se met pas à jour...
Voici le code donné dans le librairie:

#include <Wire.h>
#include <LeSablier.h>

void setup() {
    Wire.begin();
    Serial.begin(9600);
    LeSablier.begin();
}

void loop() {
    Serial.print(LeSablier.getDayStr());
    Serial.print(", ");
    Serial.print(LeSablier.getMonth());
    Serial.print("/");
    Serial.print(LeSablier.getDate());
    Serial.print("/");
    Serial.print(LeSablier.getYear());
    Serial.print(" - ");
    Serial.print(LeSablier.getHours());
    Serial.print(":");
    Serial.print(LeSablier.getMinutes());
    Serial.print(":");
    Serial.print(LeSablier.getSeconds());
    Serial.print(" - Temp : ");
    Serial.println(LeSablier.getTemp());
}

Sur le serial, l'heure affichée reste la même, rien ne s'incrémente... Quelqu'un pourrait-il m'aider?

Merci d'avance :slight_smile:

Matériel:

  • Sablier Snootlab
  • Carte Arduino Uno
  • Cable

Pour initialiser l'heure avec LeSablier vous devez utiliser la commande

LeSablier.setAll (day,date,month,year,hours,minutes,seconds)

Par exemple:

LeSablier.setAll (6, 16, 2, 13, 19, 34, 00);

Un exemple d'utilisation ici: MiniClockT

Attention l'année est codée sur 2 caractères uniquement.

Avec comme paramètres:

day The day of the week
date The day of the month
month The month
year The year
hours The hour
minutes The minute
seconds The second

Vous n'avez pas assez regardé la documentation qui est très bien faite, il faut lancer le fichier index situé dans le dossier LeSablier/documentation/html/ de la librairie

Bonjour, merci de votre réponse!

Tout d'abord je tiens à préciser que malgré ce que vous sembler penser, j'ai effectivement consulté la documentation à plusieurs reprises.

De plus, le problème n'est pas le réglage de l'heure, que j'arrive très bien à effectuer, mais l'incrémentation de l'heure, qui ne fonctionne pas. C'est-à-dire, même si je la règle avec une heure comme 8h00, dix minutes plus tard cette heure reste inchangée.
Comment cela se fait-il?

Merci d'avance

EDIT:
Pour plus de précision, voici ce qui s'affiche sur le serial après avoir réglé l'heure:

Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00
Tuesday, 4/15/14 - 19:20:0 - Temp : 0.00

Comme vous pouvez le voir, rien ne bouge...

Bonjour,
il est possible que l'oscillateur de la RTC soit arrêté.

Essaie d'ajouter ce bout de code dans ta fonction loop() et dis nous ce qui s'affiche :

Wire.beginTransmission(0x68);
Wire.write(0x00);
Wire.endTransmission();
Wire.requestFrom(0x68, 1);
Serial.println(Wire.read(), BIN);

Et une petite vérif Hardware de la pile: l'avez vous bien mise et dans le bon sens?

Désolé pour le contresens de ma proposition de réponse mais ton sujet s'intitule "Horloge temps réel, mise à jour de l'heure".
a ce moment là renomme le en "Horloge temps réel bloquée"

:wink:

Bonjour, merci de ton aide :slight_smile:

Voici ce qui s'affiche:

ednesday, 0/0/0 - 0:0:0 - Temp : 0.00
11111111111111111111111111111111
ednesday, 0/0/0 - 0:0:0 - Temp : 0.00
11111111111111111111111111111111
ednesday, 0/0/0 - 0:0:0 - Temp : 0.00
11111111111111111111111111111111
ednesday, 0/0/0 - 0:0:0 - Temp : 0.00
11111111111111111111111111111111
ednesday, 0/0/0 - 0:0:0 - Temp : 0.00
11111111111111111111111111111111
ednesday, 0/0/0 - 0:0:0 - Temp : 0.00
11111111111111111111111111111111

Et ça continue toujours pareil ^^

Et une petite vérif Hardware de la pile:

Fait et refait, tout semble bien placé :slight_smile:
Effectivement je vais renommer pour que ce soit plus clair!

Merci à tous de votre aide :slight_smile:

Peux-tu faire des photos détaillées de ton cablage? de ton shield? des soudures?
On sait jamais?

As-tu contacté Snootlab directement pour ton problème? Ils ont peut-être déjà eu le cas?

aquabubulle:
Voici ce qui s'affiche:

ednesday, 0/0/0 - 0:0:0 - Temp : 0.00

11111111111111111111111111111111
ednesday, 0/0/0 - 0:0:0 - Temp : 0.00
11111111111111111111111111111111

Euh, c'est pas logique du tout ça. Tu peux poster ici le code utilisé qu'on puisse voir où ça dérape s'il-te-plaît ?

C'est juste un exemple de la librairie pourtant...
Voilà:

#include <Wire.h>
#include <LeSablier.h>

void setup() {
    Wire.begin();
    Serial.begin(9600);
    LeSablier.begin();
}

void loop() {
    Serial.print(LeSablier.getDayStr());
    Serial.print(", ");
    Serial.print(LeSablier.getMonth());
    Serial.print("/");
    Serial.print(LeSablier.getDate());
    Serial.print("/");
    Serial.print(LeSablier.getYear());
    Serial.print(" - ");
    Serial.print(LeSablier.getHours());
    Serial.print(":");
    Serial.print(LeSablier.getMinutes());
    Serial.print(":");
    Serial.print(LeSablier.getSeconds());
    Serial.print(" - Temp : ");
    Serial.println(LeSablier.getTemp());
    Wire.beginTransmission(0x68);
    Wire.write(0x00);
    Wire.endTransmission();
    Wire.requestFrom(0x68, 1);
    Serial.println(Wire.read(), BIN);

}

Pour les images, voici:

http://zupimages.net/viewer.php?id=14/16/tw6n.jpg

http://zupimages.net/viewer.php?id=14/16/z0v9.jpg

Ah ba d'accord, il faudrait peut être déclarer les pins A2 et A3 et les mettre dans le bon état.

A3 état High => +5V
A2 état Low => 0V

Pour l'instant ton shield n'est pas alimenté.

Par ailleur, couper les pattes au ras des soudures ne serait pas du luxe :grin:

Je ne pensais pas qu'il fallait initialiser aussi les entrées et sorties analogiques :blush:
(Oui je suis une grande débutante ^^ )

Quelque chose comme ça?

    pinMode(A3, OUTPUT);
    digitalWrite(A3, HIGH);
    pinMode(A2, OUTPUT);
    digitalWrite(A2,LOW);

Oui en effet ça pourrait être pas mal de couper les pattes XD

Ba si tu fais pas le montage comme ici où l'alimentation est prise sur le GRND et le +5V:

Il faut effectivement déclarer tes pins Analog pour les utiliser en tant qu'alimentation en fait.

aquabubulle:
Quelque chose comme ça?

    pinMode(A3, OUTPUT);
digitalWrite(A3, HIGH);
pinMode(A2, OUTPUT);
digitalWrite(A2,LOW);

Oui tu mets ça dans le setup et après tu nous dis si ça résout le problème ou pas :grin:

Bon, j'avais beaucoup d'espoir mais ça n'a rien changé...
Je continue de chercher mais je commence un peu à désespérer :frowning:

peut etre que ton module est défectueux.

parles en avec le SAV Snootlab

Mesure pour commencer avec un voltmètre la tension de la pile, sur la pile elle même et au niveau des soudures du circuit.