Mise à l'heure RTC DS3231

Bonjour,

Dans mon projet actuel basé sur un Arduino Nano avec afficheur LCD et boutons de commandes, j'ai intégré une horloge temps réel utilisant un module DS3231 qui fonctionne parfaitement (pile neuve, affichage OK, progression de l'heure parfaite. La maquette fonctionne aussi bien branchée au PC qu'en autonome, sur batterie.

J'ai un problème quant à la mise à l'heure depuis le PC par une commande spécifique appelée depuis la maquette (voir code ci-dessous) ; la mise à l'heure s'effectue très bien ou non selon le cas et je ne comprends pas pourquoi ! J'ai consulté plusieurs discussions sur ce sujet mais rien trouvé pour résoudre ce problème aléatoire. Mon code est-il correct ou y a-t-il quelque chose à ajouter ? Toutes les variables du code ont bien-sûr été initialisées auparavant.

Merci pour votre aide.

if (!ds3231.begin()) {
            Code_erreur |= B00000001;
            Serial.print(F("Horloge défectueuse !"));
        }
        else{
            Code_erreur &= B11111110;
            ds3231.adjust(DateTime(F(__DATE__), F(__TIME__)));
            Serial.print(F("Mise à l'heure OK : "));
            DateTime Heure_DS3231 = ds3231.now();
            Serial.print(Heure_DS3231.hour());
            Serial.print(":");
            Serial.println(Heure_DS3231.minute());

        }

Bonsoir botanicus

C'est cette ligne qui est en cause, lors de la compilation de ton programme, cette fonction met ta RTC à l'heure du PC, à chaque redémarrage de ton programme, celui-ci reprends la même heure puisqu'elle est "gravée" dans la mémoire de l'Arduino.

Pour éviter ce problème, télécharges ton programme avec cette ligne, ce qui mets à l'heure ta RTC, puis mets cette ligne en remarque:
//ds3231.adjust(DateTime(F(__DATE__), F(__TIME__)));
Puis retélécharges ton programme.

Cordialement
jpbbricole

Ça n’appelle pas le PC

À la compilation les macros __DATE__ et __TIME__ sont remplacées textuellement par la date et l’heure de compilation. C’est donc codé en dur dans votre programme - si cette ligne de code est appelée ça remet l’horloge à la date et heure de la compilation.

Merci pour vos réponses !

OK, j’ai compris maintenant. A lire plusieurs publications, j’avais compris que cette instruction copiait l’heure du PC. En fait c’est l’heure de la dernière compilation. Je vais donc l’utiliser occasionnellement quand j’aurai besoin de la connexion USB pour maintenance après avoir recompilé, puis j’utiliserai la commande de mise à l’heure manuelle prévue dans mon système.

@+

Autant utiliser la commande de mise à l'heure manuelle :slight_smile: sinon ça vous oblige à faire 2 uploads, un pour régler l'heure et un avec cette ligne de commande enlevée...

Effectivement. Merci pour le conseil !

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