Yahoo refuse tous les emails du site. Si vous avez une adresse chez un autre prestataire, c'est le moment de l'utiliser ;)

En cas de soucis, n'hésitez pas à aller faire un tour sur la page de contact en bas de page.

Topic "Utiliser un module horloge temps réel DS1307 avec une carte Arduino / Genuino"

Flux RSS des posts récents dans ce topic ( Flux Atom)


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#344 | Signaler ce message


Dans ce tutoriel, nous allons apprendre ensemble à utiliser un module horloge temps réel DS1307 avec une carte Arduino / Genuino. En bonus, nous verrons comment utiliser la sortie programmable du module pour générer une base de temps. Nous verrons aussi comment utiliser la mémoire NVRAM du module pour conserver des données.

Lire la suite de l'article sur le site

Derniére modification le par skywodd


Pas de photo de profil

weetoz

Membre

#347 | Signaler ce message


J'en ai rêvé;;; Skywodd le fait!!

Une librairie pour le DS1307 sans objet, trop classe Skywodd! ;)

vivement la suite!


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#348 | Signaler ce message


Une librairie pour le DS1307 sans objet, trop classe Skywodd! ;)

par weetoz

Techniquement, c'est de la programmation orienté objet vu que j'utilise une structure. Maintenant, c'est comme "pain au chocolat" et "chocolatine", la question fait débat ;)


Pas de photo de profil

weetoz

Membre

#350 | Signaler ce message


Techniquement, c'est de la programmation orienté objet vu que j'utilise une structure.

par skywodd

Moi, j'ai rien vu… ;)

Bon, pas de résolveurs de portées (::), pas de méthode, pour les constructeurs et destructeurs, j'y comprends encore rien donc je ne sais pas… Enfin je commence juste en C++, donc…

Toujours est-il, ta librairie est bien plus simple à employé que celle que j'utilise jusque là. Et c'est bien plus pratique en ce moment où je suis en formation d'automatisme qui est chronovore et me laisse peu de temps pour C++.


Pas de photo de profil

weetoz

Membre

#354 | Signaler ce message


Salut Skywodd,

la fonction void adjust_current_datetime(datetime_t *datetime) fonctionne à merveille!

J'ai voulu mettre tes fonctions dans un DS1307.cpp, cependant le compilo me dit que le type byte n'est pas autorisé… Celà vient-il de Sloëber (Eclipse pour arduino)? Ou il y a un problème de portée pour ce type? Il me semble pas obligatoire de déclarer une classe pour une librairie non plus… A moins que j'ai encore lu de travers! ;) Merci d'avance.


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#356 | Signaler ce message


J'ai voulu mettre tes fonctions dans un DS1307.cpp, cependant le compilo me dit que le type byte n'est pas autorisé…

par weetoz

Normal, bytes est un type qui n'existe pas en C/C++. C'est une pure invention du framework Arduino ;)

Ajoute ceci en début de ton cpp :

1
2
3
4
5
6
#if ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#define INPUT_PULLUP 2
#endif

Pas de photo de profil

weetoz

Membre

#362 | Signaler ce message


Merci Skywodd, ça fonctionne impeccable!!! ;)


Pas de photo de profil

Laurent

Membre

#830 | Signaler ce message


Bonjour,

J'ai un DS1307 mais il n'y a pas les bornes SCL et SDA. A la place, j'ai des bornes TX et RX. Le module est visiblement compatible arduino et Raspberry.

En utilisant le code, pas moyen de mettre l'horloge à jour. Tous les paramètres restent à 165 (ou 25 pour l'heure).

Ai-je loupé quelque chose ?

Merci,

Laurent


Pas de photo de profil

weetoz

Membre

#831 | Signaler ce message


Bonjour Laurent, Commence par vérifier que c'est bien une puce DS1307 qui est sûre ton module. Si c'est le cas, inverse les broches RX et TX. ( Je pars du principe qu'il y a une erreur de sérigraphie…) N'hésite pas à poster une photo recto verso de ton module avec une bonne qualité.


Pas de photo de profil

Laurent

Membre

#832 | Signaler ce message


Merci pour la réponse rapide. J'ai déjà essayé d'inverser Tx/Rx, aucun effet. C'est bien un DS1307 dans le module. C'est celui-ci : https://www.gotronic.fr/art-horloge-rtc-114100001-pour-raspberry-et-arduino-25174.htm#complte_desc


Pas de photo de profil

weetoz

Membre

#833 | Signaler ce message


Dans ce cas, post ton code, tu es peut-être passé à côté de quelque chose… N'hésite pas non plus à donner des infos, modèle Arduino, et comment tu as connecté les broches sur quels ports…


Pas de photo de profil

Laurent

Membre

#834 | Signaler ce message


La carte : arduino Uno. J'ai cablé 5V du module sur 5V de l'arduino. GND du module sur GND de l'arduino. Rx du module sur A4. Tx du module sur A5 (J'ai aussi essayé l'inverse pour Tx, Rx). Pour le code, j'ai repris le code de l'article.


Pas de photo de profil

weetoz

Membre

#835 | Signaler ce message


Essaye éventuellement de rajouter des "Pullups de 4.7kOhms sur SDA et SCL peut-être que…


Pas de photo de profil

Laurent

Membre

#836 | Signaler ce message


J'ai testé. Malheureusement, pas d'effet.


Pas de photo de profil

weetoz

Membre

#838 | Signaler ce message


Dans le cas où tu es sûre pour le code, je pencherais pour un module défectueux, mais comme il envoie des données… je suis un peu surpris. Tu es sûre d'avoir le bon "BaudRate" côté console série? (115200 bauds dans l'exemple de skywwodd).


Pas de photo de profil

Laurent

Membre

#839 | Signaler ce message


J'ai essayé 5 codes différents trouvés ici et là : toujours le même résultat. J'ai toujours une date du type 165/165/2165 45:165:165. J'ai placé quelques mouchards dans le code et lorsque j'arrive dans la boucle pour mettre l'horloge à jour, pas d'erreur, tout se passe normalement. Mais, dès que je demande l'heure, je retombe sur l'heure ci-dessus. Donc, je pense que je peux être certain que le code n'est pas en cause.

Au niveau du BaudRate, j'ai contrôlé : identique dans le code et sur le terminal.

J'ai continué mes recherches et j'ai trouvé sur certains forum qu'il pouvait s'agir d'un problème de tension (notamment avec des clones de l'arduino qui ne donnent pas exactement 5V). De mon côté, je n'ai pas un clone et j'ai contrôlé les tensions, j'ai 5.1V (sachant que mon multimètre à peut être une erreur de mesure - je suis dans la gamme 0-20V). J'ai aussi essayé avec une alim indépendante de l'arduino (en gardant la masse commune) : toujours le même souci.

Module défectueux : pourquoi pas mais c'est quand même bizarre qu'il renvoie des informations. Si quel'qu'un à d'autres idées, je suis preneur. Merci !


Pas de photo de profil

weetoz

Membre

#841 | Signaler ce message


Que remets-tu en cause? … Et pour quoi?

Perso, je pense que le module que tu as acheté est défectueux, mais celà ne peux se confirmer qu'avec le test du code que tu as chargé.

Dans l'électronique hobbyiste, la seule certitude que l'on a, c'est que l'utilisateur glisse de petites erreurs qui foutent la pagaille, et ce malgré les compétences et la pratique.

Maintenant, si tune veux pas faire un simple "Ctrl C" et "Ctrl V" du code que tu as chargé dans ta carte de développement dans les balises prévue à cet effet, Je ne pourrais continuer à te guider dans ton dépannage.

J'utilise avec succès le DS1307 depuis plusieurs années sans difficultés, et franchement, le seul problème qu'une tension inexacte peut entrainer, c'est une dérive de temps, qui reste acceptables…

Oups pardon, tu ne t'adressais visiblement pas à moi…

Si quel'qu'un à d'autres idées, je suis preneur. Merci !

Je resterais poli…


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#858 | Signaler ce message


Super bizarre cette histoire !

Je viens de regarder le module en question sur le site de seeed.

En prenant en parallèle le brochage d'une carte Raspberry Pi, il semblerait que le module en question est bien câblé sur les broches Rx et Tx (GPIO 14 et 15) du Rpi, et non sur les broches du bus I2C. Il n’existe pourtant aucune variante du DS1307 ayant une sortie série …

En plus, il y a deux résistance de pull-up de 10K sur la carte, comme avec u bus I2C … Ça n'a absolument aucun sens.


Pas de photo de profil

yumumu

Membre

#868 | Signaler ce message


Bonjour , j'ai un petit soucis , j'ai suivi le tutoriel et un message d'erreur s'affiche :" DateTime_t was not declared in this scope". Je suis novice avec arduino donc je ne connais pas grand chose , quelqu'un pourrait m'aider ? Merci d'avance


Photo de profil de oursgenial

oursgenial

Membre

#869 | Signaler ce message


Bonjour , j'ai un petit soucis , j'ai suivi le tutoriel et un message d'erreur s'affiche :" DateTime_t was not declared in this scope". Je suis novice avec arduino donc je ne connais pas grand chose , quelqu'un pourrait m'aider ? Merci d'avance

par yumumu

As-tu déclaré ta variable dans la partie du sketch qui précède le "setup" ? Par ex DateTime now; Comme cela elle est visible pour le code que tu écris dans le "setup" et dans le "loop"
N'oublie pas qu'un code écrit dans le "setup" n'est pas visible à partir du "loop"

Derniére modification le par oursgenial


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#892 | Signaler ce message


j'ai suivi le tutoriel et un message d'erreur s'affiche :" DateTime_t was not declared in this scope".

par yumumu

Le fichier DS1307.h existe et est au bon endroit ? Bien relire l'encadré d'avertissement qui est avant le code.