Multiplexar datos que vienen de varias placas de Arduino.

Este es el código que usé, como lo dije, lo encontré en la web para un reloj con displays 7 segmentos

int ocup=0;
int disp=0;
long duracion1, distancia1, duracion2, distancia2, duracion3, distancia3, duracion4, distancia4;


byte Digit[10][8] =
  {  { 1,1,1,1,1,1,0,0 },    // 0
     { 0,1,1,0,0,0,0,0 },    // 1
     { 1,1,0,1,1,0,1,0 },    // 2
     { 1,1,1,1,0,0,1,0 },    // 3
     { 0,1,1,0,0,1,1,0 },    // 4   
     { 1,0,1,1,0,1,1,0 },    // 5
     { 1,0,1,1,1,1,1,0 },    // 6
     { 1,1,1,0,0,0,0,0 },    // 7
     { 1,1,1,1,1,1,1,0 },    // 8
     { 1,1,1,0,0,1,1,0 }     // 9
   };

void setup() {
 Serial.begin(9600); // inicia el puerto serial a 9600 baudios
 pinMode(2, OUTPUT); // define el pin 2 como salida (trigger)
 pinMode(3, INPUT); // define el pin 3 como entrada (echo1)
 pinMode(4, OUTPUT);  // define el pin 4 como salida (Leds1)
 pinMode(5, INPUT);  // define el pin 5 como entrada (echo2)
 pinMode(6, OUTPUT); // define el pin 6 como salida (leds2)
 pinMode(7, INPUT); // define el pin 7 como entrada (echo3)
 pinMode(8, OUTPUT);  // define el pin 8 como salida (leds3)
 pinMode(9, INPUT);  // define el pin 9 como entrada (echo4)
 pinMode(10, OUTPUT);  // define el pin 10 como salida (leds4)

 for (int i= 43; i<54; i++)
       pinMode(i, OUTPUT);
}

void loop() {
  digitalWrite(2, LOW);
  delayMicroseconds(2);
  digitalWrite(2, HIGH); // genera el pulso de 10 us
  delayMicroseconds(10);
  digitalWrite(2, LOW);

  duracion1 = pulseIn(3, HIGH); // capturamos la duración del pulso
  distancia1 = (duracion1/2)/29; // calcula la distancia en cms

 
  if (distancia1 >=1 && distancia1 <=49){
     digitalWrite(4, LOW);
    }
     
  if (distancia1 >=50 && distancia1 <=499){
     digitalWrite(4, HIGH);
    }
     
   digitalWrite(2, HIGH); // genera el pulso de 10 us
  delayMicroseconds(10);
  digitalWrite(2, LOW);

  duracion2 = pulseIn(5, HIGH); // capturamos la duración del pulso
  distancia2 = (duracion2/2)/29; // calcula la distancia en cms

 

  if (distancia2 >=2 && distancia2 <=49){
     digitalWrite(6, LOW);
  }

  if (distancia2 >=50 && distancia2 <=499){
     digitalWrite(6, HIGH);
  }

 
  digitalWrite(2, HIGH); // genera el pulso de 10 us
  delayMicroseconds(10);
  digitalWrite(2, LOW);

  duracion3 = pulseIn(7, HIGH); // capturamos la duración del pulso
  distancia3 = (duracion3/2)/29; // calcula la distancia en cms


  if (distancia3 >=2 && distancia3 <=49){
     digitalWrite(8, LOW);
  }

  if (distancia3 >=50 && distancia3 <=499){
     digitalWrite(8, HIGH);
  }

   digitalWrite(2, HIGH); // genera el pulso de 10 us
  delayMicroseconds(10);
  digitalWrite(2, LOW);

  duracion4 = pulseIn(9, HIGH); // capturamos la duración del pulso
  distancia4 = (duracion4/2)/29; // calcula la distancia en cms

 
  if (distancia4 >=2 && distancia4 <=49){
     digitalWrite(10, LOW);
  }

  if (distancia4 >=50 && distancia4 <=499){
     digitalWrite(10, HIGH);
  }

  if (digitalRead(4)==0){
    ocup=ocup+1;}
  if (digitalRead(4)==1){
    disp=disp+1;}

  if (digitalRead(6)==0){
    ocup=ocup+1;}
  if (digitalRead(6)==1){
    disp=disp+1;}

  if (digitalRead(8)==0){
    ocup=ocup+1;}
  if (digitalRead(8)==1){
    disp=disp+1;} 

  if (digitalRead(10)==0){
    ocup=ocup+1;}
  if (digitalRead(10)==1){
    disp=disp+1;} 
     
 
   int k = disp * 100 + ocup ;
    CalculaDigitos(k) ;

}

void Display(int pos, int N)
{  digitalWrite(50,LOW);      // Apaga todos los digitos
   digitalWrite(51,LOW);
   digitalWrite(52,LOW);
   digitalWrite(53,LOW);   
 
    for (int i= 0 ; i<8 ; i++)
             digitalWrite(i+43 , Digit[N][i]);
             
    digitalWrite(50 + pos, HIGH); // Enciende el digito pos
 
 delay(1);
 ocup=0;
 disp=0;

}

void CalculaDigitos(int Num)
{
 
  int Digit0 = ocup %10 ;
  int Digit1 = (ocup % 100) / 10 ;
  int Digit2 = disp %10 ;
  int Digit3 = (disp % 100) / 10 ;
 
  Display(3 , Digit3);
  Display(2 , Digit2);
  Display(1 , Digit1);
  Display(0 , Digit0);

 }

y este es el enlace de donde lo saqué.

Estoy usando displays de cátodo común y como lo dije funciona, pero 3 de ellos parpadean y la luminosidad es bastante baja.