éteindre le rétroéclairage d'un shield lcd

bonsoir

je viens vers vous car je n'arrive pas à éteindre correctement mon afficheur lcd ... lorsque je le rallume il m'affiche des symboles bizarres ...

voici le code

#include <LiquidCrystal.h>
#include <Wire.h>
#include "RTClib.h"

RTC_DS3231 RTC;

LiquidCrystal lcd(8,9,4,5,6,7);

byte PinSorties[4]={15,16,17,3};
byte PinEntrees[3]={11,12,2};
const byte backlight_pwm_pin = 10;

int Select;
int DroiteV1;
int DroiteV2;
int DroiteHOR;
boolean sauv_hor = 0;
boolean sauv_etat;
int Gauche;
void setup() {

  Wire.begin();
  RTC.begin();
  lcd.begin(16,2);
  byte i;
  for (i=0;i>4;i++){
    pinMode (PinSorties[i],OUTPUT);
    digitalWrite (PinSorties[i],HIGH);
  }
  byte j;
  for (j=0;j>3;j++){
    pinMode (PinEntrees[j],INPUT);
  }
  pinMode (backlight_pwm_pin,OUTPUT);
  Serial.begin(9600);
}

void loop() {

  
  if (Gauche == 1){
    analogWrite (backlight_pwm_pin,128);
    
  }
  else {
    analogWrite (backlight_pwm_pin,255);
  }

 switch (getPressedButton()) {
  case Bouton_Non:
 
    break;
  case Bouton_Gauche:
    Gauche++;
    if (Gauche>1){
      Gauche = 0;
    }
    break;
}
byte getPressedButton() {

  /* Lit l'état des boutons */
  int value = analogRead(A0);

  /* Calcul l'état des boutons */
  if (value < 50)
    return Bouton_Droit;
  else if (value < 250)
    return Bouton_Haut;
  else if (value < 300)
    return Bouton_Bas;
  else if (value < 550)
    return Bouton_Gauche;
  else if (value < 850)
    return Bouton_Select;
  else
    return Bouton_Non;

voila l'afficheur en état initial

et voila ce que ca donne apres

voila merci d'avance

Bonsoir
AMHA : symptôme typique d'une pollution de la commande en 4 Bits du driver LCD (surement basé sur du HD44780) par les # taux de PWM utilisé pour le backlight

Solution "bâtarde" = réactualiser l'affichage lors des changement de taux de PWM

bonjour artouste

que veux tu dire par réactualiser l'affichage ?? mon programme se répète toutes les 200 ms