probleme d'afficheur LCD I2C avec horloge RTC

Le choix de fantoche est plus optimisé en terme de connexions mais plus complexe à mettre en œuvre.
A toi de voir si pour toi le pire c'est le câblage ou la programmation.
Si tu débutes fais comme tu le sens le mieux pour commencer, réalise ton projet actuel et tu fera plus complexe sur le prochain projet.

Pour commander 4 registres à décalage en cascade tu commences par construire les 4 mots de 8 bits correspondant aux chiffres à afficher.
Ensuite en utilisant 4 fois la fonction shiftout() tu charges les 4 mots dans les registres. A chaque envoi d'un mot, le mot précédent est décalé dans le registre suivant.

Utilité du "latch" :
Le latch, en français verrou, sert à bloquer l'affichage, le registre fonctionne normalement seul ses étages de sortie sont bloqués. Sans latch pendant le chargement des 4 mots tu verrai les segments clignoter.
Le latch est verrouillé pour bloquer l'affichage pendant le chargement et une fois le chargement terminé il est déverrouillé pour autoriser le nouvel affichage.

J'ai un petit soucis avec l'heure.

Quand je coupe et je rebranche le montage, l'heure se dérègle.

La pile est bonne et j'ai testé avec un autre module rtc.

Je pense que le soucis viens de cette ligne :

 RTC.adjust(DateTime(__DATE__, __TIME__)); //Ajuster la clock avec l'heure et la date de l'ordinateur

Cette commande remet la rtc a l'heure quand on charge le programme mais comment elle réagit quand on relance le montage ?

Comment résoudre ça ?

//Ajuster la clock avec l'heure et la date de l'ordinateur

Pas tout à fait exact. La RTC est remise à l'heure de la dernière compilation (DATE, TIME) à chaque redémarrage.
L'idéal serait d'ajouter un clavier matriciel ou des boutons de mise à l'heure, comme sur un radio-réveil.

Le but final est de fabriquer une horloge complètement indépendante et donc si il faut remettre a l'heure a chaque coupure de courant c'est pas top :frowning:

Bonjour,

Tu lances ton programme une première fois juste après l'avoir compilé et téléchargé.
Ensuite tu mets la ligne RTC.adjust en commentaire, tu recompile et tu téléverse à nouveau.

kamill:
Bonjour,

Tu lances ton programme une première fois juste après l'avoir compilé et téléchargé.
Ensuite tu mets la ligne RTC.adjust en commentaire, tu recompile et tu téléverse à nouveau.

Et ça fonctionne, merci !!!!

Je me disais bien qu'une horloge a mémoire qui ne retiens pas l'heure c'étais pas normal :smiley:

C'est quoi ton horloge (RTC) ?

Si c'est une DS1307, ou une autre basée aussi sur un quartz externe, tu aura à la remettre à l'heure souvent.
Les quartz dérivent en température, surtout ceux de bas de gamme.

Si c'est une DS3231 (compensée intérieurement en température) aucun soucis tu la remettra à l'heure tous les 2 ou 4 ans et encore peut-être plus.

C'est une DS3231

Si c'est une DS3231 (compensée intérieurement en température) aucun soucis tu la remettra à l'heure tous les 2 ou 4 ans et encore peut-être plus.

Vrai. Le DS3231 est très précis.
A ceci près : il y a les changements d'heure été / hiver.

Le projet final inclura une réception DCF77 donc ce n'est pas un soucis

DCF77 : alors OK.

hbachetti:
DCF77 : alors OK.

Pas si ok que ça, je trouve plein d'exemple et de montages pour récupérer les infos d'une antenne DCF77 mais je n'arrive pas a trouver un exemple des remise a l'heure automatique d'une horloge RTC.

C'est si complexe que ça ?

Bonjour

Dans le lien de ma signature, il y a tout ce qu'il te faut :slight_smile:

Le changement heure d'hiver, heure d'été va bientôt disparaître.
Perso je règle en TU qui pour la France est une référence plus vraie (en moyenne parce qu'entre la frontière de l'est et l'Atlantique il y a quand même 1 heure de différence).

C'est le programme qui assure la gestion.

bricoleau:
Bonjour

Dans le lien de ma signature, il y a tout ce qu'il te faut :slight_smile:

Je dois être aveugle alors car j'avais déjà trouvé ce topic dans mes recherches et je n'arrive pas a voir ou on parle de RTC.

En gros je devine plus ou moins comment récupérer les valeurs et les exploiter, ce qui m'échape, c'est comment conditionner ça au fait que la trame soit bonne et que la mise a l'heure de la RTC ne se fasse que par exemple une fois par jour.

J'ai raté un truc ?

En attendant, j'ai avancé. Comme je ne maîtrise vraiment pas j'ai un peu triché pour obtenir ce que je voulais mais ça fonctionne.



ça affiche les 3 informations en boucle avec un délai de 3 secondes, donc tout ce que je voulais.

Il me reste a supprimer les 0 en trop ( dizaine jour et dizaine températures )

Afficher les températures négatives ( si quelqu'un sait me dire comment extraire le moins )

et le plus difficile, intégrer la mise a l'heure automatique via DCF77

Marcototo:
Je dois être aveugle alors car j'avais déjà trouvé ce topic dans mes recherches et je n'arrive pas a voir ou on parle de RTC.

En gros je devine plus ou moins comment récupérer les valeurs et les exploiter, ce qui m'échape, c'est comment conditionner ça au fait que la trame soit bonne et que la mise a l'heure de la RTC ne se fasse que par exemple une fois par jour.

J'ai raté un truc ?

Oui
Dans le premier lien il y a aussi une lib simpleRTC pour le ds3231, qui gère toute seule les changements d'heure, et qui expose une fonction de réglage à partir des valeurs récupérées d'un signal DCF77.

Désolé d’être lourd mais je lis ton code et je ne capte pas :frowning:

Je ne vois pas ou est la partie qui gère la réception du signal (pin de data, décodage etc )

il faut mettre la librairie de la rtc en plus de simple rtc ou simple rtc gere a la fois l'horloge et le décodage DCF ?

Ou je comprends rien ( ce qui est possible aussi :confused: )

"Afficher les températures négatives ( si quelqu'un sait me dire comment extraire le moins )"

C'est aussi simple que l'oeuf de Christophe Colomb.

char signe;
if (temperature < 0) signe= ' -' else signe=' ';
< type > temperatureAAfficher = abs(temperature);
// afficher signe; afficher temperatureAAfficher ;

Merci pour cette réponse.

Je continue a chercher en meme temps que je pose mes questions ici, donc j'avais trouvé.

Effectivement, une fois qu'on a trouvé c'est simple :grinning: :grinning: