Augmenter / Réduire valeur de analogWrite avec bouton LCD (+ affichage)

Bonsoir, j’ai un arduino uno avec un LCD Keypad Shield v1.1 qui possède 6 boutons (SELECT, LEFT, UP, DOWN, RIGHT, RESET) et j’aimerais pouvoir contrôler la valeur de analogWrite avec les flèches (HAUT augmente de 1, BAS diminue de 1, GAUCHE diminue de 10 et DROIT augmente de 10). Il faudrait aussi que la valeur s’affiche sur l’écran LCD et qu’on ne puisse pas aller en dessous de 0 et au dessus de 255.

Mon code actuel permet simplement d’augmenter de 25% selon le bouton choisi et tant que l’on reste appuyé dessus.

Voici le code :

#include <LiquidCrystal.h>

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


 void setup() {
  // put your setup code here, to run once:
   lcd.begin(16, 2);  
  lcd.print("Valeur :");
  
}

enum {
  BUTTON_NONE,  
  BUTTON_UP,   
  BUTTON_DOWN,  
  BUTTON_LEFT,  
  BUTTON_RIGHT,
  BUTTON_SELECT 
};

void loop() {
  /* Affiche le bouton appuyé */
  lcd.setCursor(0, 1);
  switch (getPressedButton()) {
  case BUTTON_NONE:
    lcd.print(F("0 / 255  "));
    analogWrite(3, 0);
    break;

  case BUTTON_UP:
        lcd.print(F("191 / 255  "));
    analogWrite(3, 191);
    break;

  case BUTTON_DOWN:
       lcd.print(F("255 / 255  "));
    analogWrite(3, 255);
    break;

  case BUTTON_LEFT:
        lcd.print(F("127 / 255  "));
    analogWrite(3, 127);
    break;

  case BUTTON_RIGHT:

    break;

  case BUTTON_SELECT:
         lcd.print(F("64 / 255  "));
    analogWrite(3, 64);
    break;
  }

  /* Délai pour l'affichage */
  delay(100);
  }




byte getPressedButton() {

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

  /* Calcul l'état des boutons */
  if (value >= 700)
    return BUTTON_NONE;
  else if (value >= 500)
    return BUTTON_SELECT;
  else if (value >= 320)
    return BUTTON_LEFT;
  else if (value >= 160)
    return BUTTON_DOWN;
  else if (value >= 50)
    return BUTTON_UP;
  else
    return BUTTON_RIGHT;
}

Merci pour votre aide !

Si vous avez besoin de + d’informations n’hésitez pas

analogWrite(3, 255);

devient
analogwrite(pinSortie, consigne);
pinSortie est une constante, que vous fixerez à 3;
consigne est une valeur, qui évoluera au rythme de vos pressions sur les boutons;
pour ne pas partir très vite en butée, vous devriez regarder vos boutons disons, toutes les secondes....(ça vous fait clignoter l'afficheur toutes les secondes, au lieu de toutes les 1/10 seconde; ce qui est fatigant)

D'accord merci beaucoup je vais essayer

Nota:
lcd.print(F("xxx/255")) deviendrait alors (non testé):
lcd.print(consigne, 4); lcd.print(F("/255"));

et serait commune aà tous les case....

Parfait je fait plusieurs codes de test et j'essayerai tout ça demain quand j'aurai mon arduino