Suite de mon projet avec encodeur rotatif et affichage sur 5x 7segments led

Bonjour à tous
Je vais m'arracher les cheveux :fearful:
J'utilise des 74HC595 en cascade pour n'occuper que 3 sorties de mon arduino Uno
J'ai donc un code qui fonctionne pour lire l'encodeur avec les bornes de 118.00 à 136.00 par incrément de 0.5

J'ai un deuxième code qui affiche les valeurs voulues (valeurs fixes)

J'essaye alors de combiné ces deux codes pour lire mon encodeur et afficher le resultat sur les 5x 7 digit
Il se passe bien quelque chose, mais il ne m'affiche pas les bonnes valeurs

#include <PString.h>
#include <Stdio.h>


const int verrou = 11; //pin 12 du 75HC595
const int donnee = 10; //pin 14 du 75HC595
const int horloge = 12;//pin 11 du 75HC595

char premier = 0; 
char deuxieme = 0; 
char troisieme = 0;
char quatrieme = 0;
char cinquieme = 0;

float nVal=0;
char buffer[7];

void setup()
{
   //on déclare les broches en sortie
   pinMode(verrou, OUTPUT);
   pinMode(donnee, OUTPUT);
   pinMode(horloge, OUTPUT);
   pinMode(2, INPUT); //A from encoder
   pinMode(3, INPUT); //SW from encoder
   pinMode(4, INPUT); //B from encoder
   attachInterrupt(0, nAnalyse, CHANGE);
   attachInterrupt(1, pushSW, CHANGE);
   digitalWrite(2, HIGH);
   digitalWrite(3, HIGH);
   digitalWrite(4, HIGH);
   Serial.begin(9600);
   Serial.println("Start");
}

void loop()
{   
   //on commence par mettre le verrou
   digitalWrite(verrou, LOW);
   shiftOut(donnee, horloge, LSBFIRST, ~conversionCinquieme(cinquieme)); //cinquieme afficheur
   shiftOut(donnee, horloge, LSBFIRST, ~conversionQuatrieme(quatrieme)); //quatrieme afficheur
   shiftOut(donnee, horloge, LSBFIRST, ~conversionTroisieme(troisieme)); //troisieme afficheur
   shiftOut(donnee, horloge, LSBFIRST, ~conversionDeuxieme(deuxieme)); //deuxieme afficheur
   shiftOut(donnee, horloge, LSBFIRST, ~conversionPremier(premier)); //premier afficheur
   //et on relache le verrou pour mettre à jour les données
   digitalWrite(verrou, HIGH);
 }

//Fonctions qui récupère les valeurs à afficher et les convertie
char conversionPremier(char premier){
char resultatPremier = 0;
switch (buffer[0]){
  case 0:
  resultatPremier=250;
  return resultatPremier;
  break;
  case 1:
  resultatPremier=40;
  return resultatPremier;
  break;
  case 2:
  resultatPremier=217;
  return resultatPremier;
  break;
  case 3:
  resultatPremier=121;
  return resultatPremier;
  break;
  case 4:
  resultatPremier=43;
  return resultatPremier;
  break;
  case 5:
  resultatPremier=115;
  return resultatPremier;
  break;
  case 6:
  resultatPremier=243;
  return resultatPremier;
  break;
  case 7:
  resultatPremier=56;
  return resultatPremier;
  break;
  case 8:
  resultatPremier=251;
  return resultatPremier;
  break;
  case 9:
  resultatPremier=123;
  return resultatPremier;
  break;
}
}

char conversionDeuxieme(char deuxieme){
char resultatDeuxieme = 0;
switch (buffer[1]){
  case 0:
  resultatDeuxieme=250;
  return resultatDeuxieme;
  break;
  case 1:
  resultatDeuxieme=40;
  return resultatDeuxieme;
  break;
  case 2:
  resultatDeuxieme=217;
  return resultatDeuxieme;
  break;
  case 3:
  resultatDeuxieme=121;
  return resultatDeuxieme;
  break;
  case 4:
  resultatDeuxieme=43;
  return resultatDeuxieme;
  break;
  case 5:
  resultatDeuxieme=115;
  return resultatDeuxieme;
  break;
  case 6:
  resultatDeuxieme=243;
  return resultatDeuxieme;
  break;
  case 7:
  resultatDeuxieme=56;
  return resultatDeuxieme;
  break;
  case 8:
  resultatDeuxieme=251;
  return resultatDeuxieme;
  break;
  case 9:
  resultatDeuxieme=123;
  return resultatDeuxieme;
  break;
}
}
//Ajout de +4 pour le point décimal
char conversionTroisieme(char troisieme){
char resultatTroisieme = 0;
switch (buffer[2]){
  case 0:
  resultatTroisieme=254; //+4 pour le point
  return resultatTroisieme;
  break;
  case 1:
  resultatTroisieme=44;
  return resultatTroisieme;
  break;
  case 2:
  resultatTroisieme=221;
  return resultatTroisieme;
  break;
  case 3:
  resultatTroisieme=125;
  return resultatTroisieme;
  break;
  case 4:
  resultatTroisieme=47;
  return resultatTroisieme;
  break;
  case 5:
  resultatTroisieme=119;
  return resultatTroisieme;
  break;
  case 6:
  resultatTroisieme=247;
  return resultatTroisieme;
  break;
  case 7:
  resultatTroisieme=60;
  return resultatTroisieme;
  break;
  case 8:
  resultatTroisieme=255;
  return resultatTroisieme;
  break;
  case 9:
  resultatTroisieme=127;
  return resultatTroisieme;
  break;
}
}

char conversionQuatrieme(char quatrieme){
char resultatQuatrieme = 0;
switch (buffer[4]){
  case 0:
  resultatQuatrieme=250;
  return resultatQuatrieme;
  break;
  case 1:
  resultatQuatrieme=40;
  return resultatQuatrieme;
  break;
  case 2:
  resultatQuatrieme=217;
  return resultatQuatrieme;
  break;
  case 3:
  resultatQuatrieme=121;
  return resultatQuatrieme;
  break;
  case 4:
  resultatQuatrieme=43;
  return resultatQuatrieme;
  break;
  case 5:
  resultatQuatrieme=115;
  return resultatQuatrieme;
  break;
  case 6:
  resultatQuatrieme=243;
  return resultatQuatrieme;
  break;
  case 7:
  resultatQuatrieme=56;
  return resultatQuatrieme;
  break;
  case 8:
  resultatQuatrieme=251;
  return resultatQuatrieme;
  break;
  case 9:
  resultatQuatrieme=123;
  return resultatQuatrieme;
  break;
}
}

char conversionCinquieme(char cinquieme){
char resultatCinquieme = 0;
switch (buffer[5]){
  case 0:
  resultatCinquieme=250;
  return resultatCinquieme;
  break;
  case 1:
  resultatCinquieme=40;
  return resultatCinquieme;
  break;
  case 2:
  resultatCinquieme=217;
  return resultatCinquieme;
  break;
  case 3:
  resultatCinquieme=121;
  return resultatCinquieme;
  break;
  case 4:
  resultatCinquieme=43;
  return resultatCinquieme;
  break;
  case 5:
  resultatCinquieme=115;
  return resultatCinquieme;
  break;
  case 6:
  resultatCinquieme=243;
  return resultatCinquieme;
  break;
  case 7:
  resultatCinquieme=56;
  return resultatCinquieme;
  break;
  case 8:
  resultatCinquieme=251;
  return resultatCinquieme;
  break;
  case 9:
  resultatCinquieme=123;
  return resultatCinquieme;
  break;
 
}
}
void nAnalyse(){
  if(digitalRead(2) == digitalRead(4)){
    nVal=nVal+0.05;
  }else{
    nVal=nVal-0.05;
  }
  if(nVal<118){
    nVal=118;}
  if(nVal>136){
    nVal=136;}
  PString mystring(buffer, sizeof(buffer));
  mystring.print(nVal);
  Serial.print(buffer[0]);
  Serial.print(buffer[1]);
  Serial.print(buffer[2]);
  Serial.print(buffer[4]);
  Serial.print(buffer[5]);
  Serial.println();

}

void pushSW(){
  if(digitalRead(3)){
    //rien à faire
  }
  else{
    Serial.println("Bouton");
  }
}

La sortie sur la console serie est bonne, mais pas l'affichage
A votre bon coeur

Pas de solution ? :cold_sweat: