encodeur rotatif et compte à rebours besoin d'aide svp

comme ça ne fonctionne toujours pas, j'ai décidé de passer par un mode "GelProg"
afin de geler le compte à rebours, et de la programmer, puis de relancer le compte à rebours, mais ça ne fonctionne pas...
quelqu'un à une idée ?

avant le void setup j’ai mis :

// - - - pour le codeur rotatif - - -
// - - - ATTENTION : l'encodeur est un KY 040 - - -
// le + est branché au 5V
// le GND est branché à la masse

int val;
int PinCLK = 8; //bouton CLK connécté à la broche 8
int PinDT = 9; //bouton DT connécté à la broche 9
int PinSW = A0; //bouton Switch connécté à la broche A0
static long encoderPos = -1;    // Au 1er démarrage, il passera à 0
int PinCLKLast = LOW;
int nbPas = 200;                 // Résolution de l'encodeur
int n = LOW;

dans le void setup j’ai mis ça :

// - - - entrée pour l'encodeur rotatif - - -

    pinMode (PinCLK, INPUT_PULLUP); //le bouton CLK est une entrée
    pinMode (PinDT, INPUT_PULLUP); //le bouton DT est une entrée
    pinMode (PinSW,INPUT_PULLUP);         //le bouton SW est une entrée

dans le void loop j’ai mis ca :

if (!(digitalRead(PinSW))) {
        encoderPos = 0; // Reset la position si on appui sur l'encodeur
        GelProg (); //on lance le sous programe de gel du compte à rebours et de sa programmation

Et enfin le void GelProg :

void GelProg (){
   // - - - initialisation de l'écran en mode programme - - -
   lcd.clear();
   lcd.setCursor(3, 0);     // positionne le curseur à la première ligne
   lcd.print("Programmez"); // Affiche programmez
   lcd.setCursor(4, 1);     // positionne le curseur à la seconde ligne
   lcd.print("00:00:00");  // Affiche le format du Compte à rebours

   // - - - lecture de l'encodeur rotatif - - -

      n = digitalRead(PinCLK);
   
   if ((PinCLKLast == LOW) && (n == HIGH)) {
     
     if (digitalRead(PinDT) == LOW) {
      //Sens antihoraire
       encoderPos--;
       if ( encoderPos < 0 ) {
         encoderPos = nbPas;
       }
     } else {
       //Sens horaire
       encoderPos++;
       if ( encoderPos > ( nbPas - 1 ) ) {
         encoderPos = 0;
       }
     }
    // - - - si encoderPos est négatif on affiche l'heure à zéro - - -
     if (encoderPos <=0) {
      time = 0;
      heure = 0;
      minute = 0;
      seconde = 0;
      lcd.print(heure);
      lcd.print(minute);
      lcd.print(seconde);
     } else {
      time = encoderPos * (15*60);
     }

     // - - - on imprime tout ça sur le LCD - - -
      lcd.clear();
              lcd.setCursor(4, 0);
              lcd.print("Appuyez pour Go");
              lcd.setCursor(4, 1);                                 
              lcd.print("00:00:00");  // Affiche le format du Compte à rebours
    
    // Imprime les heures sur la collone 4 si ils sont supérieur à 10, et sur la colonne 5 si inférieur à 10:
              if (heure >= 10) {
              lcd.setCursor(4, 1);
    }
              else{
              lcd.setCursor(5, 1);
    }
              lcd.print(heure);
    
    // Imprime les minutes sur la collone 7 si ils sont supérieur à 10, et sur la colonne 8 si inférieur à 10:
              if (minute >= 10){
              lcd.setCursor(7, 1);
    }
              else {
              lcd.setCursor(8, 1);
    }
              lcd.print(minute);
    
    // Imprime les seconde sur la collone 10 si ils sont supérieur à 10, et sur la colonne 11 si inférieur à 10:
              if (seconde >= 10){
              lcd.setCursor(10, 1);
    }
              else {
             lcd.setCursor(11, 1);
    }
             lcd.print(seconde); 


             if (!(digitalRead(PinSW))) {
              ArretProg(); //on lance le sous programme d'arret temporisé
             }

   }
   PinCLKLast = n;
}

lorsque j’appuie sur l’encodeur, l’afficheur LCD m’affiche :
Programmez
00 : 00 : 00
Mais lorsque je tourne l’encodeur… rien….

une idée ?