Fonction pour afficheur 3 X 7 segments 3 parts

Bonjour,
après moultes recherches je n'ai pas trouvé comment faire tourner un afficheur 7 segments, donc je m'y suis mis !
ci joint le fruit de mon boulot inspiré du tuto "blink without delay"

/*
Affichage sur afficheur 7 segments 3 afficheurs à cathode commune
 
 */


  int ledState = 0;  // commande afficheur 1
  int ledState2 = 0;  // commande afficheur 2
  int ledState3 = 0;  // commande afficheur 3
  long previousMillis = 0;
  int nombre; // nombre issu du chiffre decomposé

int x=0;



void setup()   {                
  // initialisation des sorties (j'utilise un arduino mega)
  pinMode(31, OUTPUT);     // patte afficheur 1
  pinMode(33, OUTPUT);     // c
  pinMode(35, OUTPUT);     // patte afficheur 2
  pinMode(37, OUTPUT);     // dp
  pinMode(39, OUTPUT);     // patte afficheur 3
  pinMode(41, OUTPUT);     // d
  pinMode(43, OUTPUT);     // g
  pinMode(45, OUTPUT);     // b
  pinMode(47, OUTPUT);     // a
  pinMode(49, OUTPUT);     // f
  pinMode(51, OUTPUT);     // e
   
}

void loop()                     
{
affiche(123); // affiche 123
 }


void affiche (int chiffre){
  
  long resultat;

  int c; // c comme centaines
  int d; // d comme dizaine
  int u; // u comme ....

  int interval = 1; // Vitesse de multiplexage
  
  
  //Décomposition du chiffre en nombres
  
   resultat = chiffre/100;
   c=resultat;
   resultat = (chiffre-(c*100))/10;
   d = resultat;
   u = (chiffre-(c*100)) - (d*10);
   
  // début de l'affichage (inspiré de BLINK WITHOUT DELAY)  
     // Partie Multiplexage 
  if (millis() - previousMillis > interval) {
     previousMillis = millis();  
   
    x=x+1; 
     if (x == 1){
       ledState3 = 255;   
       ledState2 = 0;  
       ledState = 0;     
    nombre=u;   
     }
     if (x == 2){
       ledState = 255;   
       ledState2 = 0;  
       ledState3 = 0;   
     nombre=d;  
     }
     if (x == 3){
       ledState2 = 255;  
       ledState3 = 0;  
       ledState = 0;   
    nombre=c;   
     }
      if (x == 4){
        x=0;
      }
    
  // partie affichage
    
  
    
 
  
if (nombre == 0) {
  digitalWrite(33, LOW);
  digitalWrite(37, HIGH); 
  digitalWrite(41, LOW); 
  digitalWrite(43, HIGH);
  digitalWrite(45, LOW);
  digitalWrite(47, LOW);
  digitalWrite(49, LOW);
  digitalWrite(51, LOW);

}
if (nombre == 1) {
  digitalWrite(33, LOW);
  digitalWrite(37, HIGH); 
  digitalWrite(41, HIGH); 
  digitalWrite(43, HIGH);
  digitalWrite(45, LOW);
  digitalWrite(47, HIGH);
  digitalWrite(49, HIGH);
  digitalWrite(51, HIGH);

}
if (nombre == 2) {
  digitalWrite(33, HIGH);
  digitalWrite(37, HIGH); 
  digitalWrite(41, LOW); 
  digitalWrite(43, LOW);
  digitalWrite(45, LOW);
  digitalWrite(47, LOW);
  digitalWrite(49, HIGH);
  digitalWrite(51, LOW);

}
if (nombre == 3) {
  digitalWrite(33, LOW);
  digitalWrite(37, HIGH); 
  digitalWrite(41, LOW); 
  digitalWrite(43, LOW);
  digitalWrite(45, LOW);
  digitalWrite(47, LOW);
  digitalWrite(49, HIGH);
  digitalWrite(51, HIGH);

}
if (nombre == 4) {
  digitalWrite(33, LOW);
  digitalWrite(37, HIGH); 
  digitalWrite(41, HIGH); 
  digitalWrite(43, LOW);
  digitalWrite(45, LOW);
  digitalWrite(47, HIGH);
  digitalWrite(49, LOW);
  digitalWrite(51, HIGH);

}
if (nombre == 5) {
  digitalWrite(33, LOW);
  digitalWrite(37, HIGH); 
  digitalWrite(41, LOW); 
  digitalWrite(43, LOW);
  digitalWrite(45, HIGH);
  digitalWrite(47, LOW);
  digitalWrite(49, LOW);
  digitalWrite(51, HIGH);

}
if (nombre == 6) {
  digitalWrite(33, LOW);
  digitalWrite(37, HIGH); 
  digitalWrite(41, LOW); 
  digitalWrite(43, LOW);
  digitalWrite(45, HIGH);
  digitalWrite(47, HIGH);
  digitalWrite(49, LOW);
  digitalWrite(51, LOW);
  
}
if (nombre == 7) {
  digitalWrite(33, LOW);
  digitalWrite(37, HIGH); 
  digitalWrite(41, HIGH); 
  digitalWrite(43, HIGH);
  digitalWrite(45, LOW);
  digitalWrite(47, LOW);
  digitalWrite(49, HIGH);
  digitalWrite(51, HIGH);
  
}
if (nombre == 8) {
  digitalWrite(33, LOW);
  digitalWrite(37, HIGH); 
  digitalWrite(41, LOW); 
  digitalWrite(43, LOW);
  digitalWrite(45, LOW);
  digitalWrite(47, LOW);
  digitalWrite(49, LOW);
  digitalWrite(51, LOW);
  digitalWrite(33, LOW);
}
if (nombre == 9) {
  digitalWrite(33, LOW);
  digitalWrite(37, HIGH); 
  digitalWrite(41, LOW); 
  digitalWrite(43, LOW);
  digitalWrite(45, LOW);
  digitalWrite(47, LOW);
  digitalWrite(49, LOW);
  digitalWrite(51, HIGH);
  digitalWrite(33, LOW);
}
  }
 digitalWrite(39, ledState);   
 digitalWrite(35, ledState2);
 digitalWrite(31, ledState3);
  
}