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>
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 »
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 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.