Go Down

Topic: Ecran LCD - renvoie automatique à la ligne (Read 114 times) previous topic - next topic

Yan_azer

Bonjour,
J'aimerais afficher sur un écran LCD des questions sélectionnés aléatoirement à partir d'une structure.
Le problème étant que les questions à afficher sont trop grande pour l'écran (16x2). :smiley-sad:

Je me demande alors si il existe une façon de renvoyer automatiquement à la ligne les caractères supplémentaires ?

Voici alors à quoi ressemble ma structure :

Code: [Select]
struct QCM_t {
  const char* question;
  byte bonneReponse;
  const char* reponses[nbReponses];
};

QCM_t Q1 = {"Capitale de la Hongrie", 1, {"Gyor", "Budapest", "Eger", "Pecs"}};
QCM_t Q2 = {"Taille de la Seine en km", 2, {"703", "812", "777", "834"}};
QCM_t Q3 = {"Napoleon 1er sacre empereur", 2, {"1802", "1805", "1804", "1800"}};
QCM_t Q4 = {"Quand est ne Victor Hugo ?", 1, {"1807", "1802", "1795", "1808"}};
QCM_t Q5 = {"Quand est ne Louis-Philippe ?", 0, {"1773", "1780", "1770", "1768"}};
QCM_t Q6 = {"Annee de naissance de Chirac", 2, {"1930", "1935", "1932", "1938"}};
QCM_t Q7 = {"Debut du Mandat de Pompidou", 2, {"1965", "1971", "1969", "1963"}};
QCM_t Q8 = {"Qui a ecrit «j accuse» ?", 1, {"Balzac", "Zola", "Hugo", "Diderot"}};


Et j'affiche les questions comme ceci :

Code: [Select]
for (byte i = 0; i < 3; i++){
    lcd.print(QCM[i]->question);}


Merci pour votre aide  :D

kamill

#1
Apr 16, 2019, 01:05 pm Last Edit: Apr 16, 2019, 01:08 pm by kamill
Bonjour,

Il faut que tu gères ça pas programme. Une fonction pour afficher avec saut à la ligne ne semble pas très compliquée à faire.
Par contre au vu de ton tableau, ça me semble difficile d'afficher à la fois les questions et les propositions.

Je n'ai pas compris ce que tu veux faire avec ce code.
Code: [Select]
for (byte i = 0; i < 3; i++){
    lcd.print(QCM[i]->question);}
Tu affiches trois questions à la suite?

dbrion06

Vous pouvez tenter de couper la question en deux (ou mettre les deux mort sots de la question dans la structure, mais ce n'est pas beau).
for (byte i = 0; i < 3; i++){
   lcd.print(QCM->question);}

deviendrait (
avez vous vérifié que cette boucle marche, déjà, pour 3 questions , avec un écran 16x2 ????)

Code: [Select]

for (byte i=0; i>3; i++) {
   char copie[55];
   strcpy(copie, QCM[i]->question);
   copie[15] = \0; // je force la taille à 15
   lcd.print(copie);
   // sauter à la ligne, si besoin: votre lcd a VRAMENT besoin de beaucoup de lignes
   if (strlen( QCM[i]->question) > 15) {
     // sauter ligne
    lcd.print(15+ QCM[i]->question);

}
}

fdufnews

#3
Apr 16, 2019, 01:19 pm Last Edit: Apr 16, 2019, 01:21 pm by fdufnews
Par contre au vu de ton tableau, ça me semble difficile d'afficher à la fois les questions et les propositions
Je crois que ça va même être difficile d'afficher les questions. Certaines ont plus de 24 caractères.

Je dirais que cet afficheur n'est pas très bien adapté au besoin.

dbrion06

Un afficheur oled sur I2C, combiné à une loupe, a davantage de lignes, ne mange que deux pattes et coûte moins cher.....

Go Up