[Résolu] Affichage simultané heure DCF77 et température impossible

Bonjour à tous.

J'ai remarqué que le code utilisant les bibliothèques DCF77 et DHT22 ne parvient pas à se syntoniser sur le signal DCF77 lorsque la mesure du DCF et de température sont présents simultanément dans le loop() :

void loop()
{
  dcf.getTime(dt);         // Décode l'heure courante
  if(dt.sec != currentSecond)  // Affichage toutes les secondes
  {
    lireEtAfficherDCF();  // Heure affichée toujours nulle.
    lireEtAfficherTemperature();
  }
}

Par contre, l'heure est correctement affichée lorsque mesure et affichage de la température sont retirés :

void loop()
{
  dcf.getTime(dt); // Décode l'heure courante
  if(dt.sec != currentSecond) // Affichage toutes les secondes
  {
    lireEtAfficherDCF(); // Fonctionne !
  }
}

J'ai inversé les lectures DCF et température, insérer des délais, etc., mais sans aucun résultat valable.

Quelqu'un a-t-il une idée de ce qui empêche ces deux composants de travailler ensemble ?

Merci pour votre aide.

Après avoir analysé le code des fichiers Funkhur.cpp et DHT.cpp, il apparaît que :

  • DHT.cpp (capteur de température) possède, à la ligne 109, l’instruction cli() et, à la ligne 139, l’instruction sei().

  • Funkuhr.cpp (capteur DCF77) travaille, ligne 143, avec une interruption <attachInterrupt(m_intNumber, inthandler, CHANGE);>

En conclusion, les deux bibliothèques ne peuvent pas cohabiter du fait que DCF77 utilise l’interruption et que DHT possède un bloc de code cli()-sei(). Ainsi, le code de DCF voit son interruption systématiquement bloquée lors de la lecture de la température par le code DHT.cpp ; le code de DCF (Funkuhr.cpp) ne peut donc plus décoder le signal horaire.

Bonjour

Essaye cette bibliothèque DHT

@bricoleau

Merci pour ce lien. J'essaie et je vous tiens au courant.

@bricoleau

Ca marche sans aucun problème, tant avec le code d’essai simplifié, que sur ma “grosse” application qui de ce fait a été ressortie du tiroir, dans la mesure où elle est maintenant fonctionnelle !

Merci encore ; le projet est désormais sauvé et le temps passé au codage est utilisé !

LCD.jpg