Display de 7 segmentos mas teclado 4X4

Intento mostrar números de dos dígitos en dos display de 7 segmentos (luego se replicara en un tablero con tiras de led) con un teclado matricial de 4x4.

El problema es que al presionar el numero A muestra en cualquiera de los dos display(A o B) y con el numero B pasa lo mismo.

Al parecer el problema esta en mi lógica.

Adjunto código.
Muchas gracias de antemano.

#include <Keypad.h>

void displayA(int a, int b, int c, int d, int e, int f, int g){
  digitalWrite(22,a);
  digitalWrite(23,b);
  digitalWrite(24,c);
  digitalWrite(25,d);
  digitalWrite(26,e);
  digitalWrite(27,f);
  digitalWrite(28,g);
}

void displayB(int a1, int b1, int c1, int d1, int e1, int f1, int g1){
  digitalWrite(29,a1);
  digitalWrite(30,b1);
  digitalWrite(31,c1);
  digitalWrite(32,d1);
  digitalWrite(33,e1);
  digitalWrite(34,f1);
  digitalWrite(35,g1);
}

void actulizarNroA(char numeroA){
  switch(numeroA){
    case '0':
        displayA(1,1,1,1,1,1,1);
    break;
    case '1':
        displayA(0,1,1,0,0,0,0);
    break;
    case '2':
        displayA(1,1,0,1,1,0,1);
    break;
    case '3':
        displayA(1,1,1,1,0,0,1);
    break;
    case '4':
        displayA(0,1,1,0,0,1,1);
    break;
    case '5':
        displayA(1,0,1,1,0,1,1);
    break;
    case '6':
        displayA(1,0,1,1,1,1,1);
    break;
    case '7':
        displayA(1,1,1,0,0,0,0);
    break;
    case '8':
        displayA(1,1,1,1,1,1,1);
    break;
    case '9':
        displayA(1,1,1,0,0,1,1);
    break;
  }
}

void actulizarNroB(char numeroB){
  switch(numeroB){
    case '0':
        displayB(1,1,1,1,1,1,1);
    break;
    case '1':
        displayB(0,1,1,0,0,0,0);
    break;
    case '2':
        displayB(1,1,0,1,1,0,1);
    break;
    case '3':
        displayB(1,1,1,1,0,0,1);
    break;
    case '4':
        displayB(0,1,1,0,0,1,1);
    break;
    case '5':
        displayB(1,0,1,1,0,1,1);
    break;
    case '6':
        displayB(1,0,1,1,1,1,1);
    break;
    case '7':
        displayB(1,1,1,0,0,0,0);
    break;
    case '8':
        displayB(1,1,1,1,1,1,1);
    break;
    case '9':
        displayB(1,1,1,0,0,1,1);
    break;
  }
}

//Teclado
const byte ROWS = 4; 
const byte COLS = 4; 
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte rowPins[ROWS] = {36, 37, 38, 39}; 
byte colPins[COLS] = {40, 41, 42, 43}; 

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

char digitos[2];
char key;
byte i;

void setup(){
  for(int i=22;i<36;i++){
    pinMode(i,OUTPUT);
  }
}
  
void loop(){
  for(i=0;i<2;i++){
    key = keypad.getKey();
    digitos[i] = key;
  }
  actulizarNroA(digitos[0]);
  actulizarNroB(dígitos[1]);
}

¡Usted envía los mismos datos a ambas exhibiciones, por supuesto que parecen iguales!

  actulizarNroA(key);
  actulizarNroB(key);

Cometí un error al publicar mi código. Con la corrección siguiente presenta el problema que mencioné anteriormente.

actulizarNroA(digitos[0]);
actulizarNroB(dígitos[1]);