Problème afficheur lcd 20x4 sur arduino mega 2560

Bonjour,

Je rencontre actuellement des difficultés à afficher du texte sur mon écran lcd 20x4 ( dont je n’ai pas le datasheet).
Le problème que je rencontre est que je n’arrive pas à afficher du texte. De plus il n’y a que la ligne 1 et 3 qui affichent les carrés blancs lorsque je varie le contraste à l’aide du potentiomètre.

Merci de vos retours

Salut

Je pense qu'il faudrait faire un petit effort de documentation :

  • câblage
  • code (entre balise SVP)

@+

Ok,

Je transfert cela dès ce soir lorsque je serai face à mon ordi !
Bonne @près midi ensoleillée !!!

Re !

alors concernant le câblage (je possède une arduino mega 2560):

Vss = masse
vdd = +5V
V0 = signal du potentiomètre
RS = pin digital 22
RW = masse)
E = pin pwm 4
D0->D3 non branchés
D4 = pin pwm 7
D5 = pin digital 24
D6 = pin digital 23
D7 = pin pwm 6
A = +5V
k = masse

Concernant le code utilisé le voici :

Le code correspondant au LCD est le suivant :

#include <Servo.h>// librairie servo

#include<LiquidCrystal.h> //librairie de l'écran LCD
LiquidCrystal lcd(4,5,6,7,22,23,24);//pin utilisés par l'écran LCD

int switchState=0;//intégral état bouton démarrage

int switchState2=0;//intégral état bouton de marche arrière



const int servo1 = 3; // pin pwm 3 servo pan tilt
const int servo2 = 2;// pin pwm 2 servo pan tilt
const int joyH = A14;// pin ana 14 joystick pan tilt
const int joyV = A15;// pin ana 15 joystick pan tilt
int servoVal;     // integral valeur servo pan tilt
Servo myservo1;   // nom servo pan tilt
Servo myservo2; // nom servo pan tilt

const int servo3 = 4;// pin pwm 4 servo gps
Servo myservo3;// nom du servo du gps

void setup() {
pinMode(50,INPUT);// pin digi 50 entrée bouton démarrage carte voiture
pinMode(52,OUTPUT);// pin digi 52 commande relai démarrage carte voiture

pinMode (51, INPUT);//pin digi 51 entrée bouton marche arrière levier de vitesse

myservo1.attach(servo1);  // attache servo pan tilt
myservo2.attach(servo2);  // attache servo pan tilt 

myservo3.attach(servo3); //attach servo gps 
}

void loop() {
switchState=digitalRead(50); //lecture bouton démarrage
if
(switchState==LOW){//pas d'appui sur le bouton

                            // code du relai de la cartede la voiture à l'arret
  digitalWrite(52,HIGH); // relai non enclanché

                              // code pour la position rentrée du gps
  myservo3.write(0); // gps rentré
}
else{//appui sur le bouton
                             // code pour le relai de la carte de la voiture en marche
                             
  digitalWrite(52,LOW);// relai enclenché

                         // code pour l'écran lcd
lcd.begin(20,4);
lcd.setCursor(4,1);
lcd.print("d'Emilio");
lcd.setCursor(4,0);
lcd.print("AUDI R18");
 
                             // code pour la sortie du gps
                             
myservo3.write(110); //gps sorti
}
{
switchState2=digitalRead(51); //lecture bouton marche arrière levier de vitesse
if
(switchState2==LOW){//pas de marche arrière enclenchée   
}
else{ // marche arrière enclenchée
          // code pour l'utilisation du pan tilt                       
  servoVal = analogRead(joyH); // lire valeur horizontale joystick pan tilt  (valeur entre 0 et 1023)      
    servoVal = map(servoVal, 0, 1023, 0, 180);    // transformation valeur entre 0 et 180°
    myservo2.write(servoVal);          
    servoVal = analogRead(joyV);      // lire la valeur vertical du joystick     
    servoVal = map(servoVal,0 , 1023,100 , 180);     //transformation valeur entre 0 et 180°
    myservo1.write(servoVal);                           
    delay(15); // délai de 15 milli secondes             
}

}}

et le problème rencontré est que le LCD s'éteint des que l'arduino s'allume ( il s'éteint environ 1 sec après la mise sous tension de l'arduino).

Lorsqu'il est allumé (sur la seconde de démarrage il n'y a que la ligne 1 et 3 ou les carré blancs apparaissent).

#include<LiquidCrystal.h> //librairie de l'écran LCD
LiquidCrystal lcd(4,5,6,7,22,23,24);//pin utilisés par l'écran LCD

5 ne sert a rien puisque RW est cablé au gnd, le test R/W est utilisé dans des cas tres spécifiques

en 4 bits lcd( RS, RW (inutile), E, D4, D5, D6, D7), déjà que tu dis avoir cablé 22 en RS ?

d'apres ton cablage ce serait LiquidCrystal lcd(22,4,7,24,23,6);

pourquoi un branchement aussi disparate, utiliser des sorties qui se suivent ou l'ordre des pins du lcd

Et la pin 4 est utilisée pour le LCD et pour le servo3...

bricoleau:
Et la pin 4 est utilisée pour le LCD et pour le servo3...

bien vu, j'ai pas été plus loin que la declaration lcd

Bonjour,

Effectivement j’ai attribué 2 fois la même pin ... pas bien ...lol

Concernant le montage disparate c’est dû au montage que j’ai suivi ( issu du starterkit avec lequel j’ai débuté).
Dans le plan de montage que j’ai suivi certains pins du LCD sont connectés à des pins PWM et d’autres sont connectés à des pins digital. Et sur la Meca entre les pwm et les digital se trouvent les pins de communication.

J’ai supprimé de mon code le pin4 car déjà utilisé et j’ai libéré là pin Rs et le pin22.
Cela m’affiche toujours la ligne 1 et 3 avec des carrés blancs et n’affiche pas mon texte.

Merci de votre retour.