Afficher heure sur écran Nextion avec Time.h

Bonjour à tous,

Je cherche à afficher l'heure et les minutes sur un écran Nextion.

J'utilise la bibliothèque time.h

Jusqu'ici j'utilisais un écran TFT (commande :tft.println(&timeinfo, "%H:%M"):wink: et j'essaye d'adapter le code pour le Nextion mais ça ne m'affiche que "HH:MM au lieu de m'afficher l'heure et les minutes.

Pouvez vous m'aider?

Merci.

Voici le sous programme d'affichage:

inline void updateTime() {

  struct tm timeinfo;
  if (!getLocalTime(&timeinfo)) {
    DEBUG_PRINTLN("[TIME] Failed to obtain time");
  } else {
    //tft.println(&timeinfo, "%H:%M");
    Serial.println(&timeinfo, "%H:%M");
    NEXTION_SendString("t5", "");
    NEXTION_SendString("t5", (&timeinfo, "%H:%M"));
  }
}

Matériel utilisé :
ESP32 Wroom
écran Nextion 2.8"
Sketch de départ : GitHub - michelep/ESP32_WebRadio: An Internet web radio based to ESP32

:warning:

Post mis dans la mauvaise section, on parle anglais dans les forums généraux. ➜ déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans "Les bonnes pratiques du Forum Francophone”

je suppose que vous êtes sur ESP ou équivalent

la classe Print sait traiter une struct tm et un format

et c'est donc pour cela que le LCD sait faire l'affichage.

la bibliothèque Nextion est une vraie daube et ne sait pas faire ce genre de chose donc quand vous faites

NEXTION_SendString("t5", (&timeinfo, "%H:%M"));

ça ne veut absolument rien dire (c'est l'opérateur virgule, le premier paramètre est évalué et ignoré et le second paramètre est passé à la fonction, c'est pour cela que vous voyez %H:%M

il faut que vous construisiez vous même dans un petit buffer la chaîne à afficher avec la fonction strftime() comme le fait la classe Print, et que vous passiez cette chaîne en paramètre à NEXTION_SendString()

un truc du genre

char buf[10];
strftime(buf, 64, "%H:%M",&timeinfo);
NEXTION_SendString("t5", buf);

Bonjour,

Tu peux créer la chaine à afficher avec sprintf et l'envoyer au Nextion

  char str[10];
  sprintf(str,"%02d:%02d",timeinfo.tm_hour,timeinfo.tm_min);
  NEXTION_SendString("t5", str);

effectivement on peut aussi le faire "à la main" c'est simple pour l'heure

Bonjour à tous les deux et merci pour les réponses.

Je vais choisir la solution de Kamill qui me paraît beaucoup plus abordable pour mon niveau.

Fitness04

Ps: j'ai choisi le Nextion principalement pour sa connection avec 4 fils, ce qui me semblait plus facile pour le raccorder à un PCB. Mais je déchante un peu car la fonction tactile ne fonctionne plus et ces écrans sont chers !

vous pouvez connecter avec 4 fils (dont 2 pour l'alim) votre LCD en utilisant l'I2C

oui la solution de @kamill est simple puisqu'on lit directement les attributs. la fonction strftime() est plus complète (par exemple on peut afficher les jours mais en format anglais). Ici ce n'est pas tellement la peine de l'utiliser

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