Afficher des tableaux

Bonjour @djypya et bienvenue :wink:

:warning: Merci de prendre en compte les recommandations listées dans "Les bonnes pratiques du Forum Francophone”, en particulier la mise en forme du code avec les balises <CODE/>


➜ Vous définissez une fonction que vous appelez dans la loop, mais vous ne lui passez aucun paramètre... Normal qu'elle n'affiche rien :slight_smile:

De plus,

  • Vous utilisez des tableaux de char pour stocker les âges - ce sont des nombres, vous pouvez les stocker directement tel quel
  • Vous ne faites pas de retour à la ligne entre l'âge et la valeur

Vous pouvez regrouper les données dans des tableaux de pointeurs, cela permet (par exemple), de faire une boucle for pour parcourir récursivement tous les noms, valeurs et ages dans la loop, et à chaque fois afficher les nouvelles informations.

Un petit wokwi pour illustrer :

Le code

NOTE : Ici j'utilise des constexpr (équivalent à const) et des uint8_t (équivalent à byte)

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);

constexpr char* noms[] = {"TOTO", "TUTU", "BOBO", "FOO", "BAR"};
constexpr uint8_t ages[] = {12, 16, 21, 14, 17};
uint8_t valeurs[] = {1, 0, 3, 4, 7};

void setup()
{
  lcd.init();
  lcd.backlight();
  lcd.clear();
}

void loop()
{
  // on peut utiliser une boucle for ici,
  // c'est plus rapide et élégant :)
  for (uint8_t i = 0; i < 5; i++)
  {
    affiche(noms[i], ages[i], valeurs[i]);
    delay(2000);
  }
}

void affiche(const char* nom, uint8_t age, uint8_t valeur)
{
  lcd.clear(); // on fait place nette...
  //nom
  lcd.setCursor(0, 0);
  lcd.print("Nom: ");
  lcd.print(nom);
  //age
  lcd.setCursor(0, 1);
  lcd.print("Age: ");
  lcd.print(age);
  //valeur
  lcd.setCursor(0, 2);
  lcd.print("Valeur: ");
  lcd.print(valeur);
}