Afficher sur LCD un nombre entier avec un zéro devant (ex: 08)

Bonjour

Après avoir récupéré des nombres (int) de la mémoire EEPROM, je souhaiterais les afficher sur un LCD par une routine que j'ai appelé afficheLcd().

  tempo = EEPROM.read(pos);
      hDeb = String(EEPROM.read(pos+100)) + ":" + String(EEPROM.read(pos+50));
      hFin = String(EEPROM.read(pos+200)) + ":" + String(EEPROM.read(pos+150));
      afficheLcd(0,0,"R: " + String(pos+1) + " code: " + String(tempo),0,1,"D:" + hDeb + " F:" + hFin);

Par contre avec cette façon de faire, s'il y a un zéro (ex: 08) le zéro n'apparaît pas. Existe-t'il comme dans d'autres langages un format pour la présentation des nombres.

Merci Michel

Bonjour,

Si tu veux un affichage formaté, le plus complet est d'utiliser printf, si la librairie (class) utilisée le gère, ou sinon, on utilise sprintf pour formater une chaine de caractères avant de l'afficher.

Bonjour et merci pour ta réponse.

J'ai cherché à utiliser printf ou sprintf, en vain car cela me semble extrêmement compliqué pour le bricoleur que je suis. N'y a t-il pas une façon plus simple que d'aller modifier en C/C++ les headers des librairies .h Si cette possibilité d'utiliser un format est déjà intégré, n'y a-t'il pas une explication plus claire comme on peut la trouver en VB par exemple. Parce que je ne vois vraiment pas comment insérer ce formatage dans lcd.print(); Un exemple m'aiderait beaucoup: comment afficher 08 sur un lcd au lieu de 8

Merci Michel

si printf n'existe pas pour ton lcd il faut utiliser sprintf

Pour afficher (plus exactement convertir en chaine de caractères) deux chiffres: sprintf(buf,"%02d",val); 0: pour dire qu'il faut afficher les 0 d'en tête 2: 2 chiffres d: décimal (affichage d'un entier)

Ca donne quelquechose de ce genre:

  static char buf1[40], buf2[40];
  sprintf(buf1, "R: %d  code: %d", pos + 1, tempo);
  sprintf(buf2, "D: %02d:%02d  F: %02d:%02d", EEPROM.read(pos + 100), EEPROM.read(pos + 50), EEPROM.read(pos + 200), EEPROM.read(pos + 150));
  afficheLcd(0, 0, buf1, 0, 1, buf2);

Impressionnant! Grand merci Kamill, cela fonctionne comme je le désirais. Mais où trouve-t'on l'explication de cette syntaxe parce que je suppose qu'il y a plein d'options. J'ai un peu écumé les sites et autres forums ARDUINO sans trouvé une description rationnelle.

Cordialement Michel

Tu tapes simplement "sprintf" dans ton moteur de recherche préféré.

Cordialement.

Pierre

ici par exemple (doc en anglais)