Améliorer mon programme

Salut , je compte réaliser une horloge composé de 6 afficheurs BCD , commandé par arduino uno ( 2 si il le faut car bcp de sortie ) , j'utilise également le registre 74C595 pour limité le nombre de sortie , et aussi un petit clavier pour entrer le temps .
Sincèrement ce projet n'est pas très utile mais mon ami passe son bac et a fait option projet et il a choisi montre BCD donc je l'aide comme je peux , je compte faire 3 mode ( 4 si possible )
le code :

#include <Keypad.h>

#define SHIFT 5
#define LATCH 6
#define DATA 7

#define SHIFT_2 8
#define LATCH_2 9
#define DATA_2 10

/*------------------------------------------------------------------------------------------*/
const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'#','0','*','D'}
};
byte rowPins[ROWS] = {3, 2, A5, A4}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {A3,A2, A1, A0}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

/*------------------------------------------------------------------------------------------*/
const byte chars[10] = {
    B00111111,//0
    B00000110,//1
    B01011011,//2
    B01001111,//3
    B01100110, //4
    B01101101, //5
    B01111101,//6
    B00000111,//7
    B01111111,//8
    B01101111 //9
    };

int aa = 0 ;
int i2 = 1 ;

/*------------------------------------------------------------------------------------------*/
void setup(){
  Serial.begin(9600);
  // On déclare les pins vers le 74HC595 en sortie
    pinMode(SHIFT, OUTPUT);
    pinMode(LATCH, OUTPUT);
    pinMode(DATA, OUTPUT);
    
    
}

void loop(){
  char mode = keypad.getKey();
  while(mode!=NO_KEY){
  char a = keypad.getKey();
  while(a!=NO_KEY){
  
  switch ( mode ) {
    
/*------------------------------------------------------------------------------------------*/      

case 'A' :
{
        int aa = a - '0' ;  // on convertie aa en int
        for ( int i = aa ; i<10 ; i++ ){
        digitalWrite(LATCH, LOW); 
        shiftOut(DATA, SHIFT, MSBFIRST,chars[i]); 
        digitalWrite(LATCH, HIGH);                                 
        delay(1000);
        
        
        if (i == 9 )
        {
        if(i2>5){i2=0;}
        delay(1000);
        digitalWrite(LATCH_2, LOW);
        shiftOut(DATA_2, SHIFT_2, MSBFIRST, chars[i2]); 
        digitalWrite(LATCH_2, HIGH);
        i2++;
        } 
        }
        a = '0' ;  // on le fait pour qu'aprés le 9 on a 0 et pas revenir a l'état précédent
        
        break ;
    }


/*-------------------------------------------------------------------------------------------*/

case 'B' :
{
        digitalWrite(LATCH, LOW);
        shiftOut(DATA, SHIFT, MSBFIRST, B10001101); 
        digitalWrite(LATCH, HIGH);
        delay(1000) ;
        break ;
}
   default :{
   break ;
}
}
} 
}
}
  1. Aider moi a ameliorer ce programme s'il vous plait .

Pourquoi 2 Uno ? Utilise une mega tu sera tranquille.