Go Down

Topic: Ecran LCD (Read 143 times) previous topic - next topic

Sherman503

Bonjour, j'essaie d'afficher des textes sur un écran et notamment avec 3 menus et 2 sous options dans chaque menu. Je choisis les menus avec un bouton poussoir et les sous options avec un autre. Je n'ai pas d'erreurs quand je compile mais rien ne s'affiche sur l'écran. J'ai essayé de remplacer la loop par un simple setCursor puis un print mais rien non plus. J'aimerais que vous me confirmiez qu'il n'y a pas d'erreurs dans le code comme pour le port série ou pour les valeurs des menus. Sinon ce dois être une erreur de câblage, est-ce qu'une résistance de 2.7 Komh  est adapté pour un écran LCD? J'ai vu quelqu'un sur un site en utilisé une avec un écran similaire... Merci en avance de votre réponse.






Code: [Select]
#include <LiquidCrystal.h> // on importe la bibliothèque pour LCD

LiquidCrystal monEcran(5, 4, 12, 11, 10, 9); // on crée un objet LCD nommé monEcran en mode 4 bits

const byte bout1 = 6; //constante du pin bouton 1
const byte bout2 = 7; //constante du pin bouton 2


int posMenu = 0 ; //variable de position dans menu principal

int posSousMenu = 0 ; // tableau pour stocker les positions de chaque sous-menu

int modeES = 0;
int modeCB = 0;
int modeDG = 0;

String ligne1[3] = {"Droite/Gauche :        ","Entrée/Sortie :        ","Créneau/Bataille :    "}; //tableau de titre du menu principal

String ligne2 = "Droite";//chaîne pour la ligne 2 (dépend du menu 1)


void setup() {
  // put your setup code here, to run once:

  /* Initialise le port série */
  Serial.begin(115200);
 
 pinMode(bout1, INPUT);

  pinMode(bout2, INPUT);

  monEcran.begin(16, 2); //on initialise la communication avec 16 colonnes et 2 lignes

  monEcran.clear(); // on efface l'écran








 


}

void loop() {
  // put your main code here, to run repeatedly:


  navigation();
  affichage();
 

}



//fonction de navigation dans le menu

void navigation() {

  //création de variables d'état pour les boutons

  boolean etatBout1 = digitalRead(bout1);

  boolean etatBout2 = digitalRead(bout2);

  //Boucle pour naviguer dans les menus

  if (etatBout1 || etatBout2) { //si l'un des deux boutons est appuyé

    if (etatBout1) { // si bouton 1

      posMenu = (posMenu + 1) % 3; //on change le menu principal (3 positions)

   

    if (etatBout2) { // si bouton 2

      switch (posMenu) { //l'action dépend du menu 1

        case 0: //si menu DG

          modeDG = (modeDG + 1) % 2;

          break;

        case 1 : //si menu ES

          modeES = (modeES + 1) % 2;

          break;

        case 2 : // si menu CB

          modeCB = (modeCB + 1) % 2; 

          break;
       

         

      }

    }


    delay(200); //attente pour éviter les répétitions

  }

}
}


//fonction de rafraîchissement de l'écran LCD

void affichage() {

  monEcran.setCursor(0, 0); // on positionne le curseur en haut à gauche

  monEcran.print(ligne1[posMenu]); // on écrit le menu de la ligne 1

  monEcran.setCursor(0, 1); // on passe à la ligne suivante

 

  String mDG[2] = {

    "Droite             ",

    "Gauche           ",

  };

   String mES[2] = {
   

    "Entrée            ",

    "Sortie          ",
   };

   String mCB[2] = {

    "Créneau            ",

    "Bataille          ",

   };

    switch (posMenu) { // en fonction du menu 1

    case 0: // si menu  Droite ou gauche

      ligne2 = mDG[modeDG]; //titre pris dans tableau mDG

      break;

    case 1: // si menu entrée ou sortie

      ligne2 = mES[modeES]; // appel de la construction de l'affichage

      break;

    case 2:

      ligne2 = mCB[modeCB];

      break;

  }

  monEcran.print(ligne2); // on affiche la ligne du menu 2

  }

Go Up