Controlar varios display con 74hc595

Buenos dias, soy pachu y bastante novato en arduino

Necesito usar dos displays que estan controlados por cuatro 74hc595 cada uno lleva dos.

este es el display

#include <Arduino.h>
const int sensorPin = A2;
//Pin connected to ST_CP of 74HC595 AKA RCLK
short rclk = 5;
//Pin connected to SH_CP of 74HC595 AKA SCLK
short sclk = 4;
//Pin connected to DS of 74HC595 AKA DIO
short dio = 6;
int sensorValue;
long contador=9996;
long anteriorsensorpin=0;
 
byte getBits(int val)
{
  byte b;
 
  switch(val)
  {
    case 0:
    b = 0b11000000;
    break;
    case 1:
    b = 0b11111001;
    break;
    case 2:
    b = 0b10100100;
    break;
    case 3:
    b = 0b10110000;
    break;
    case 4:
    b = 0b10011001;
    break;
    case 5:
    b = 0b10010010;
    break;
    case 6:
    b = 0b10000010;
    break;
    case 7:
    b = 0b11111000;
    break;
    case 8:
    b = 0b10000000;
    break;
    case 9:
    b = 0b10010000;
    break;
    default:
    b = 0b11111111;
  }
return b;
}
 
 
void setup()
{
//set pins to output so you can control the shift register
pinMode(rclk, OUTPUT);
pinMode(sclk, OUTPUT);
pinMode(dio, OUTPUT);
pinMode(A2, INPUT);
 
 
 
//char caracter[]={0b11001111,0b01001111};
//char posicion[]={0b10001000,0b10010000};
//Serial.begin(9600);
}
 
void loop()
{
  sensorValue = analogRead(sensorPin);
 
  if (sensorValue== 0 && anteriorsensorpin>100 )
  {
    contador=contador+1;
  }
 

    
  digitalWrite ( rclk ,   LOW ) ;
  shiftOut(dio, sclk, MSBFIRST, getBits((contador/1000)%10) ); // Caracter
  shiftOut(dio, sclk, MSBFIRST, 0b10001000 ); // Posicion
 
  digitalWrite ( rclk ,   HIGH ) ;
 
  digitalWrite ( rclk ,   LOW ) ;
  shiftOut(dio, sclk, MSBFIRST, getBits((contador/100)%10) ); // Caracter
  shiftOut(dio, sclk, MSBFIRST, 0b10000100 ); // Posicion
 
  digitalWrite ( rclk ,   HIGH ) ;
 
  digitalWrite ( rclk ,   LOW ) ;
  //shiftOut(dio, sclk, MSBFIRST, (0b10011001-10000000) ); // Caracter
  shiftOut(dio, sclk, MSBFIRST, (getBits((contador/10)%10) -10000000)); // Caracter
  shiftOut(dio, sclk, MSBFIRST, 0b10000010 ); // Posicion
 
  digitalWrite ( rclk ,   HIGH ) ;
 
  digitalWrite ( rclk ,   LOW ) ;
  shiftOut(dio, sclk, MSBFIRST, getBits(contador%10) ); // Caracter
  shiftOut(dio, sclk, MSBFIRST, 0b10000001 ); // Posicion
  digitalWrite ( rclk ,   HIGH ) ;
 
 
 
  anteriorsensorpin=sensorValue;
  //Serial.println(contador);
  //Serial.println( getBits(contador) );
}

el problema radica en que muestra las dos pantallas por duplicado

el segundo display esta conectador para usar el multiflex de forma que el QH del primer display va al DIO del segundo display

Gracias y un saludo

multiflex de forma que el QH del primer display va al DIO del segundo

Esta es la conexión, si lo tienes asi bien

|337x500

y acá tienes un hilo con todo resuelto A Project using the 74HC595 arduino for 7 segment Display.

digitalWrite ( rclk ,   LOW ) ;
  shiftOut(dio, sclk, MSBFIRST, getBits(contador) ); // Caracter primer display
  shiftOut(dio, sclk, MSBFIRST, 0b10001000 ); // Posicion
  shiftOut(dio, sclk, MSBFIRST, getBits((contador2) ); // Caracter segundo display
  shiftOut(dio, sclk, MSBFIRST, 0b10001000 ); // Posicion
  digitalWrite ( rclk ,   HIGH ) ;

muy facil cuado se entiende xd

ya me puedo entretener limpiando codigo para poder ampliar

muchas gracias surbyte