7 segmenti e capacità parassite ?!

Ciao, ho realizzato un semplice timer per il bromografo ed ho utilizzato un display a 7 segmenti a due cifre per contare i minuti, ho montato tutti i componenti su un paio di breadboard ed ho fatto delle prove con arduino prima di programmare un attiny84 per il circuito stand alone.

Mi ritrovo però un problema un pò strano con il display a 7 segmenti:

premetto che il display è un anodo comune, a due cifre ed è composto da 8 pin (catodi) per controllare i singoli segmenti e due pin(anodi) per selezionare la prima cifra o la seconda.

Il display e gestito tramite uno shift register 74hc595 alle cui uscite sono collegati gli 8 catodi dei segmenti e tramite 2 transistor BC547B collegati ai due anodi vengono accese in modo alternato le due cifre, accendendo e spegnendo velocemente i transistor si ottiene l'effetto di persistenza visiva che da l'illusione di vedere accese contemporaneamente entrambe le cifre sul display.

Utilizzando questo metodo con arduino riesco a visualizzare numeri che vanno da 00 a 99, l'unico problema e che se ad esempio visualizzo il numero 10 i segmenti che dovrebbero essere spenti per la prima cifra rappresentata dall'uno in realtà sono parzialmente accesi e lo stesso vale per la seconda cifra, in questo modo i numeri non si riescono a leggere molto bene, provando però a rallentare il tempo tra l'accensione di una cifra e l'altra questo effetto scompare.

E come se ci fossero delle capacità parassite che non vengono dissipate immediatamente.

Per farvi comprendere meglio vi posto un immagine dei collegamenti:
http://www.theelectronicshobbyist.com/blog/arduino-2-digit-7-segment-display-counter/

questo tutorial mostra la tecnica che ho utilizzato:
http://www.theelectronicshobbyist.com/blog/arduino-2-digit-7-segment-display-counter/

infine il codice che uso per comandare il display:

          digitalWrite(t1, HIGH);
          digitalWrite(t2, LOW);
          digitalWrite(latchPin, LOW);
          shiftOut(dataPin, clockPin, LSBFIRST, numeri[dec]);
          digitalWrite(latchPin, HIGH);
          delay(5);
          
          digitalWrite(t1, LOW);
          digitalWrite(t2, HIGH);
          digitalWrite(latchPin, LOW);  
          shiftOut(dataPin, clockPin, LSBFIRST, numeri[unit]);
          digitalWrite(latchPin, HIGH);
          delay(5);

come potete vedere accendo la prima cifra portando ad uno logico il primo transistor e a zero logico il secondo, poi eseguo uno shiftout inviando allo shift register la cifra da visualizzare (le decine), attendo 5ms e poi ripeto la stessa procedura per la seconda cifra (le unità) alternando la commutazione dei transistor.
Con il delay a 5ms ho l'effetto persistenza visiva, ma allo stesso tempo si presenta il problema descritto prima, mentre se aumento il delay a 500ms perdo l'effetto persistenza visiva ma scompare anche il problema descritto.
Se poi al posto dell'arduino uno uso un attiny84 montato sulla breadborad il problema peggiora e i segmenti che dovrebbero essere spenti diventano ancora piu luminosi.

I collegamenti sono tutti corretti li ho controllati piu volte, può trattarsi di capacità parassite per via delle breadboard ?

Durante la trasmissione dati al 595 i transistori devono essere spenti.
Devi spegnere tutti due transistori, trasmettere i dati sul 595 e attivare uno dei due transsittori poi spegnere tutti due e tramettere i dati dell'altra cifra sul 595 e accendere il secondo transistore ecc.
Ciao Uwe

Caspita non ci avevo fatto caso, grazie uwefed, in effetti passando i bit al 595 come facevo io per un istante le decine venivano visualizzate a ridosso delle unità e viceversa.

E io che credevo fossero delle capacità parassite, ma in che caso mi dovrei preoccupare delle capacità parassite delle breadboard ?

Grazie ancora