Problème d'affichage de l'heure avec machine à état

void loop(){

  buttonState = digitalRead(buttonPin);    // lit l'état actuel du bouton poussoir et le mémorise dans la variable
  // compare l'état actuel du bouton poussoir à l'état précédent mémorise
  if (buttonState != lastButtonState) {    // si l'état du bouton poussoir a changé et est BAS, on incrémente la variable de comptage
    if (buttonState == LOW) {              // si l'état actuel du bouton est HAUT, il est passé de HAUT  à BAS
      variable_etat++;
    }
  
    lastButtonState = buttonState;   //mémorise l'état courant du bouton poussoir pour les prochains passages dans la boucle loop
  }
  
 //Affichage de l'heure
  DateTime now = RTC.now();
 //Affichage HEURE ------------------------------------------------------ 
   lcd.setCursor(12, 0); 
   lcd.print(now.hour()); 
   lcd.print(":"); 
   if (now.minute() < 10) { 
     lcd.print("0"); 
   } 
   lcd.print(now.minute()); 
   lcd.print(":"); 
   if (now.second() < 10) { 
     lcd.print("0"); 
   } 
   lcd.print(now.second());
   
 //Affichage DATE ------------------------------------------------------ 
   lcd.setCursor(0, 0);
   if (now.day() < 10) { 
     lcd.print("0");
   }   
   lcd.print(now.day());  
   lcd.print(" ");  
  
   switch (now.month()) { 
   case 1: 
     lcd.print("JAN"); 
     break; 
...
      case 12: 
     lcd.print("DEC"); 
     break; 
   } 
   lcd.print(" ");  
   lcd.print(now.year());  
   lcd.cursor_off();
   lcd.blink_off();
   
// 3 états possibles en fonction de bouton poussoir
  if (variable_etat == 0) {
   // Serial.println("etat programme");
    if(now.hour() == 9 && now.minute() < 30) {   
      PompeON();
      Cligno_LED();
      Affichage_cligno1();
      lcd.setCursor(0,2);
      lcd.print(" 9h->9h30 ");
      }
     if(now.hour() == 9 && now.minute() >= 30) {   
      PompeOFF();
      LED_OFF();
      lcd.setCursor(0,2);
      lcd.print("9h30->10h ");
      }
...
      if(now.hour() == 17 || now.hour() == 18 || now.hour() == 19 || now.hour() == 20) {   
      PompeON();
      Cligno_LED();
      Affichage_cligno1();
      lcd.setCursor(0,2);
      lcd.print(" 17h->21h ");
      }
      if(now.hour() == 21 || now.hour() == 22 || now.hour() == 23 || now.hour() == 00 || now.hour() == 1 || now.hour() == 2 || now.hour() == 3 || now.hour() == 4 || now.hour() == 5 || now.hour() == 6 || now.hour() == 7 || now.hour() == 8) {   
      PompeOFF();
      LED_OFF();
      lcd.setCursor(0,2);
      lcd.print(" 21h->9h  ");
      }
      }
  if (variable_etat == 1) {
    //Serial.println("etat pompe ON");
    PompeON_Force();
    Cligno_LED1();
    Affichage_cligno2();
    }
  if (variable_etat == 2) {
    //Serial.println("etat pompe OFF");  
    PompeOFF_Force();
    LED_OFF();
    }  
  if (variable_etat > 2) {
    variable_etat=0;
  }
 }