Problème afficheur lcd 20x4 sur arduino mega 2560

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