Afficher des tableaux

Bonjour à tous,
C'est la première fois que je pose une question, j'espère être au bon endroit. Je suis retraité et j'essaye d'apprendre le logiciel C arduino, avec les nombreux tutos et les posts de ce site j'arrive peu à peu à comprendre. je souhaiterai une explication pour résoudre le problème suivant: j'ai 2 tableaux de caractères et un de données et je souhaite créer une fonction pour les afficher sur LCD. je cherche depuis plusieurs jours sans succès. Merci pour votre aide et très bonne F^tes à Tous.
voici mon code:
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);
//LiquidCrystal_I2C lcd(0x3F,20,4);
// mesag
const char mes1[5] = {"TOTO " };
const char mes2[5] = {"TUTU "};
const char mes3[5] = {"BOBO "};

const char age1[3] ={"12"};
const char age2[3] ={"16"};
const char age3[3] ={"21"};

byte tableV1 [6] = {0,0,0,4,0,0}; // valeur par défaut
void setup()
{ lcd.init(); // initialisation de l'afficheur

}
void loop(){
lcd.backlight();
affiche();
} //fin
//fonction
void affiche ( const char* mes1, const char* age1, byte tableV1)
{
// lcd.setCursor(caractere, ligne);
lcd.setCursor(0,0);
lcd.print("nom=");
lcd.print(mes1);

lcd.setCursor(0,1);
lcd.print(age1);
lcd.print(tablev1);
}``

Renseignez ceci :

  affiche(mes1, age1, tableV1);

Corrigez cette orthographe :

  lcd.print(tableV1);

Lors de la publication du code du programme, cliquez d'abord sur le bouton <CODE>, puis insérez votre code formaté entre les trois marques « apostrophes inversées »

``` votre code ```

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);
}

Bonjour, un immense merci.Je vois que la solution n'était pas si compliquée, mon cerveau de 84 ans était parti dans un délire de complications. Bravo pour l'aide que vous nous apportez.

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