Contapunti per 6 giocatori con display led e 74hc595

Salve a tutti, dopo svariate prove e ricerche sulla rete mi rivolgo umilmente a Voi sperando di riuscire a superare il muro che mi sta facendo impazzire…

Come da titolo sono alle prese con gli shift register…

Ho letto, sbirciato, provato, copiato, modificato etc etc scariati esempi sul web ma non riesco a venirne a capo…

Espongo il problema:

Vorrei realizzare un tabellone segnapunti per una pedana di tiro a volo…

I tiratori sono 6 per sessione di tiro e sparano a 25 piattelli…

Quindi, la mia necessità sarebbe di visualizzare su 2 display led a 7 segmenti il punteggio da 0 a 25 per poi alla fine resettare…

Tale visualizzazione naturalmente deve essere per i 6 tiratori, quindi il progetto finale comprenderebbe 12 display led ( 2 per tiratore ) e altrettanti 74hc595 e ULN per poter pilotare led di grandi dimensioni…

Dopo le suddette svariate prove ho buttato giù qualche riga di codice e per una parte funziona…

Il mio problema è che con la libreria hc595 non sono riuscito a capire come shiftare i numeri su 2 display…

Eseguo il conteggio da 1 a 9 sul display che indico nel codice ma un solo 74595 mi permette di contare da 1 a 9…

Come faccio a contare su 2 display da 0 fino a 25??

Allego il codice che ho buttato giù…

Ringrazio tutti gli amici che mi daranno qualche dritta…

A presto.

Marcius

#include <hc595.h>

hc595  My595(12,11,13,2); // latch,clock,data,number of 74hc595
unsigned char pedana1; // Concorrente 1
unsigned char pedana2; // Concorrente 2

byte ped1[10];


const int button1=3; //Simulazione del punto segnato giocatore 1
const int button2=9; //Simulazione del punto segnato giocatore 2

int val1=LOW;
int val2=LOW;

int a=0;
int b=0;

void setup()
{
  
  pinMode(button1,INPUT);
  pinMode(button2,INPUT);
  
  ped1[0] = 0x3F; //00111111
  ped1[1] = 0x0C; //00001100
  ped1[2] = 0x5B; //01011011
  ped1[3] = 0x5E; //01011110
  ped1[4] = 0x6C; //01101100
  ped1[5] = 0x76; //01110110
  ped1[6] = 0x67; //01100111
  ped1[7] = 0x1C; //00011100
  ped1[8] = 0x7F; //01111111
  ped1[9] = 0x7C; //01111100

}

void loop()
{
  
  val1 = digitalRead(button1);
  val2 = digitalRead(button2);
  

  

    if ((val1==HIGH)&&(a < 25)){// punteggio massimo dei giocatori e' 25


    a++;}
    
    if ((val2==HIGH)&&(b < 25)){//punteggio massimo giocatore 2
      b++;}
    pedana1=ped1[a];
    pedana2=ped1[a];
  My595.Set595Pin(pedana1,0);//Scrivo il valore sul display 1
  My595.Set595Pin(pedana2,1); //Scrivo il valore sul display 2
  My595.Send595();

  delay(800);
}

Ho risolto... Una serie di switch case, uno per ogni tiratore indirizzati per i vari 74hc595..

Saluti a tutti