Problème LCD

Bonsoir,
je souhaite réaliser un coupe gâteau automatique. Pour cela, je sélectionne le nombre de parts souhaitées sur un écran LCD de référence Adafruit_RGBLCDShield. Cet écran possède des boutons poussoirs permettant d'augmenter le nombre de parts ainsi que de confirmer ce nombre. Or, lorsque je téléverse mon programme, l'écran s'allume, on voit "Nombre Parts : 2", mais impossible d'augmenter ce nombre, et je ne vois pas le problème. De plus, le programme contrôle également un moteur, mettant en rotation la plateau. Je vous laisse y jeter un œil afin de repérer une quelconque faute :

#include <Wire.h> 
#include <Adafruit_RGBLCDShield.h> 
#include <utility/Adafruit_MCP23017.h>

Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();  
 
#define RED 0x1 
#define YELLOW 0x3 
#define GREEN 0x2 
#define TEAL 0x6 
#define BLUE 0x4 
#define VIOLET 0x5 
#define WHITE 0x7 
#define maSortie       

int DirB = 8;
int BrakeB = 13;
int nbrPart = 1;
int I=0;


void setup() {
  
  
      
  lcd.begin(16, 2);          
  int time = millis();    
  lcd.print("Nbre parts : ");        


  pinMode(DirB,OUTPUT);
  pinMode(BrakeB,OUTPUT);
  }

void loop() {
    lcd.setCursor(0, 1);
  
  
  uint8_t buttons = lcd.readButtons();

  if (buttons) {
    lcd.clear();
    lcd.setCursor(0,0);
   
    if (buttons & BUTTON_LEFT) {
      nbrPart= nbrPart +1;
      if (nbrPart > 10) {
      nbrPart= 2;  
      }
      
      delay(200);
      
     
     lcd.print("Nbre parts = ");
     lcd.print(nbrPart);
     
      
    }
    if (buttons & BUTTON_SELECT) {
       lcd.print("Nbre parts validé");
    }
   }
  if (nbrPart==2) {
   while(I < nbrPart){  
    digitalWrite(DirB, HIGH);
    digitalWrite(BrakeB, LOW);
    delay(2431);
    digitalWrite(DirB, LOW);
    digitalWrite(BrakeB, LOW);
    I=I+1;
  }
  } 
 if (nbrPart==3) {
    while(I < nbrPart){
    digitalWrite(DirB, HIGH);
    digitalWrite(BrakeB, LOW);
    delay(2161);
    digitalWrite(DirB, LOW); 
    digitalWrite(BrakeB, LOW);
    I=I+1;
  }
 }
 if (nbrPart==4) {
    while(I < nbrPart){
    digitalWrite(DirB, HIGH);
    digitalWrite(BrakeB, LOW);
    delay(2026);
    digitalWrite(DirB, LOW);
    digitalWrite(BrakeB, LOW);
    I=I+1;
  }
 }
 if (nbrPart==5) {
    while(I < nbrPart){
    digitalWrite(DirB, HIGH);
    digitalWrite(BrakeB, LOW);
    delay(1945);
    digitalWrite(DirB, LOW);
    digitalWrite(BrakeB LOW);
    I=I+1;
  }
 }
 if (nbrPart==6){ 
    while(I < nbrPart){
    digitalWrite(DirB, HIGH);
    digitalWrite(BrakeB, LOW);
    delay(1891);
    digitalWrite(DirB, LOW);
    digitalWrite(BrakeB, LOW);
    I=I+1;
    }
 }
 if (nbrPart==7) {
    while(I < nbrPart){
    digitalWrite(DirB, HIGH);
    digitalWrite(BrakeB, LOW);
    delay(1853);
    digitalWrite(DirB, LOW);
    digitalWrite(BrakeB, LOW);
    I=I+1;
  }
 }
 if (nbrPart==8) {
    while(I < nbrPart){
    digitalWrite(DirB, HIGH);
    digitalWrite(BrakeB, LOW);
    delay(1823);
    digitalWrite(DirB, LOW);
    digitalWrite(BrakeB, LOW);
    I=I+1;
  }
 }
 if (nbrPart==9) {
    while(I < nbrPart){
    digitalWrite(DirB, HIGH);
    digitalWrite(BrakeB, LOW);
    delay(1801);
    digitalWrite(DirB, LOW);
    digitalWrite(BrakeB, LOW);
    I=I+1;
  }
 }
 if (nbrPart==10) {
    while(I < nbrPart){
    digitalWrite(DirB, HIGH);
    digitalWrite(BrakeB, LOW);
    delay(1783);
    digitalWrite(DirB, LOW);
    digitalWrite(BrakeB, LOW);
    I=I+1;
  }
}
 I=0;
 }

c'est mieux dans le forum francais : Français - Arduino Forum

Votre réponse est ici :

Ensuite optimisez le code qu'il soit plus clair et plus efficace.

remplacer
{
nbrPart= nbrPart +1;
if (nbrPart > 10) {
nbrPart= 2;
}
} par
{
nbrPart = (nbrPart < 10) ? nbrPart +1 : 2 ;
}
au lieu de tout ces
if (nbrPart== mettre à la place
switch(nbrPart) {
case 3 :
break;
default :
break;
}
et il sera même possible de réduire encore le test if (buttons & BUTTON_LEFT) {

ce n'est pas un Problème LCD mais d'écriture du code...

Bonjour,

C'est normal que rien ne se passe quand tu appuies sur un bouton.
Tu passes ton temps dans les delay() et pendant ce temps les touches ne sont pas lues.

Tu fais 9 fois la même chose -> fais une fonction.