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.
#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
}