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

Bonjour à tous,
Me revoilà après quelques jours d'absences.
J'ai bien avancé, comme je n'arrivais pas à actualiser l'heure dans ma machine à état se situant dans le Setup(), j'ai tous basculé dans la Loop().
je vérifie le changement d'état de mon bouton et à chaque basculement j'incrémente une variable de 0 à 2.
En fonction de cette variable je passe d'un mode à un autre.
Ca marche nickel mais exit la machine à état.
J'en ai aussi profité pour modifier mes fonctions, chaque fonction gère une ou plusieurs actions de même catégorie (affichage ou clignotement de la LED ou fonctionnement de la pompe...). Ca simplifie pas forcément le programme mais ça a le mérite d'être plus lisible et facilite les modifs futur.
Il ne me reste plus qu'a installé et programmer mes 2 sondes de T° wire et mettre tout ça dans une jolie boiboîte !!
Je reste bien évidement ouvert à tous conseils pour simplifier, amélioré ou mieux structure mon programme mais comme ça fonctionne je ne vais pas repartir d'une page blanche.

#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <Wire.h>          

LiquidCrystal_I2C lcd(0x27, 20, 4);  // Déclaration type ecran
RTC_DS1307 RTC;


  const byte pompe=4;       // relais sur la pin 4 de l'arduino
  const int ledPompeM=5;    // Led Clignotement Pompe marche sur pin 5
  const byte ledMarche=6;   // Led Marche Système sur pin 6
  boolean ledState = LOW;
  boolean Affichage1 = LOW;
  boolean Affichage2 = LOW;
  const byte buttonPin = 3; // notre bouton poussoir sur pin 4 
  int buttonState = 0;      // Variable pour l'état actuel du bouton poussoir
  int lastButtonState = 0;  // Variable pour l'état précédent du bouton poussoir
  char variable_etat = 0;   // Variable pour position machine à état

// initialistaion millis pour clignotement LED et affichage
  unsigned long previousMillis = 0; 
  unsigned long previousMillis1 = 0;
  const long interval = 1000;     
  const long interval1 = 350;
// Fonction Pompe ON Forcé -----------------------------------------------------------------------
void PompeON_Force()
{
    digitalWrite (pompe, LOW); // Pompe ON (relais enclenché à LOW)
    lcd.setCursor(0, 1);
    lcd.print("---- MODE MANUEL ---");
}

// Fonction Pompe OFF Forcé ----------------------------------------------------------------------
void PompeOFF_Force()
{
    digitalWrite (pompe, HIGH); // Pompe OFF (relais relaché à HIGH)
    lcd.setCursor(0, 1);
    lcd.print("---- MODE MANUEL ---");
    lcd.setCursor(0, 2);
    lcd.print("      POMPE OFF     ");
  }

// Fonction Pompe ON ---------------------------------------------------------------------- 
void PompeON()
{
    digitalWrite (pompe, LOW); // Pompe ON (relais enclenché à LOW)
    lcd.setCursor(0,1);
    lcd.print("---- MODE AUTO: ----");
  }
// Fonction Pompe OFF ---------------------------------------------------------------------- 
void PompeOFF()
{
    digitalWrite (pompe, HIGH); // Pompe OFF (relais relaché à HIGH)
    lcd.setCursor(0,1);
    lcd.print("---- MODE AUTO: ----");
    lcd.setCursor(10,2);
    lcd.print(" POMPE OFF");
}   
// Fonction Cligotement LED lent mode Auto ---------------------------------------------------------------------- 
void Cligno_LED()
 {
   unsigned long currentMillis = millis();
   if (currentMillis - previousMillis >= interval) {
     previousMillis = currentMillis;
     if (ledState == LOW) {
       ledState = HIGH;
     } else {
       ledState = LOW;
     }
    digitalWrite(ledPompeM, ledState);
  }
 }
 // Fonction Cligotement LED rapide mode Manuel---------------------------------------------------------------------- 
void Cligno_LED1()
 {
   unsigned long currentMillis = millis();
   if (currentMillis - previousMillis >= interval1) {
     previousMillis = currentMillis;
     if (ledState == LOW) {
       ledState = HIGH;
     } else {
       ledState = LOW;
     }
    digitalWrite(ledPompeM, ledState);
  }
 }
 // Fonction Cligotement Affichage pompe ON mode Auto---------------------------------------------------------------------- 
void Affichage_cligno1()
 {
   unsigned long currentMillis = millis();
   if (currentMillis - previousMillis1 >= interval) {
     previousMillis1 = currentMillis;
     if (Affichage1 == LOW) {
       Affichage1 = HIGH;
    lcd.setCursor(10,2);
    lcd.print(" POMPE ON "); 
     } else {
       Affichage1 = LOW;
    lcd.setCursor(10,2);
    lcd.print("          ");
     }
  }
 }
  // Fonction Cligotement Affichage pompe ON mode forcé---------------------------------------------------------------------- 
void Affichage_cligno2()
 {
   unsigned long currentMillis = millis();
   if (currentMillis - previousMillis1 >= interval1) {
     previousMillis1 = currentMillis;
     if (Affichage1 == LOW) {
       Affichage1 = HIGH;
    lcd.setCursor(0,2);
    lcd.print("      POMPE ON      "); 
     } else {
       Affichage1 = LOW;
    lcd.setCursor(0,2);
    lcd.print("                    ");
     }
  }
 }
// Fonction LED OFF---------------------------------------------------------------------- 
void LED_OFF()
{
  digitalWrite (ledPompeM, LOW);
}
  
 void setup(){
    pinMode(pompe, OUTPUT); 
    digitalWrite (pompe, HIGH); // Pompe OFF (relais relaché à HIGH)
    pinMode(ledPompeM, OUTPUT);
    pinMode(ledMarche, OUTPUT);
    digitalWrite (pompe, LOW);
    digitalWrite (ledMarche, HIGH);
    pinMode(buttonPin, INPUT_PULLUP);
   // Serial.begin(57600);
    Wire.begin();
    RTC.begin();

  //Si RTC ne fonctionne pas
  //if (! RTC.isrunning()) {
    //Serial.println("RTC ne fonctionne pas !");

  // following line sets the RTC to the date & time this sketch was compiled
  //RTC.adjust(DateTime(__DATE__, __TIME__));
  //}
//Initialisation du LCD---------------------------------------------
  lcd.init();
  lcd.cursor_on();
  lcd.blink_on();
  lcd.backlight();
  lcd.setCursor(0, 0);
 }