bug materiel, ou bug logiciel ?

Bonjour infobarquee,

la lecture est ici, sachant que je désir avancer par pas de 15mn :

void GelProg (){
   // - - - initialisation de l'écran en mode programme - - -
   
   lcd.clear();
   lcd.setCursor(1, 0);     // positionne le curseur à la première ligne
   lcd.print("Programmez"); // Affiche programmez
   lcd.setCursor(4, 1);
   lcd.print("00:00:00");  // Affiche le format du Compte à rebours
  
 
     if (!(digitalRead(PinSW))) {
        encoderPos = 0; // Reset la position si on appui sur l'encodeur
        val = LOW; //on initialise val à 0
        ArretProg();    // On lance le sous programme ArretProg
       }
     
   
   // - - - lecture de l'encodeur rotatif - - -
while ((digitalRead(PinSW))&& (val == HIGH)) {
     
      n = digitalRead(PinCLK);
   
   if ((PinCLKLast == LOW) && (n == HIGH)) {
     
     if (digitalRead(PinDT) == LOW) {
      //Sens antihoraire
       encoderPos--;
       minute = minute - 15;
       if ( encoderPos < 0 ) {
         encoderPos = nbPas;
         minute = 0;
         heure --;
       }
     } else {
       //Sens horaire
       encoderPos++;
       minute = minute + 15;
       if ( encoderPos > ( nbPas - 1 ) ) {
         encoderPos = 0;
                                         }
            }
 
     Imprime (); // on lance le sous programme d'impression sur le LCD
     
       

                                          }

   PinCLKLast = n;
  }   
}