Bonjour @djypya et bienvenue ![]()
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 ![]()
De plus,
- Vous utilisez des tableaux de
charpour 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);
}