shift register in cascata o non?

Ciao a tutti ,
sto imparando ovviamente, quindi mi scuso per le banalità che scriverò.

Vorrei fare una lampada da notte con 9 led. tipo lato unico di un cubo e creare delle sequenze di accensione
a mio piacimento.

Quindi ho messo due shift register in cascata pensando di poter inviare byte personalizzati e provare ad accendere solo uno alla volta

quindi nello scenario ho 8 led sul primo shift e 1(led n9) led nel secondo.

Però ora il led n9 mi si accende insieme al led 1 del primo shift.
Quindi penso che metterli in cascata non sia la cosa giusta da fare!

Ho intuito due cose (in teoria) , un led lo piloto senza shift , quindi direttamente da arduino. Oppure metto i shift su arduino gestiti separatamente.

Ma si può lasciare in cascata 2 o più shift e pilotare tramite byte i led in modo indipendente?

Ho usato come esempio questo sketch tentando di modificarlo per non fare un assoluto copia e incolla senza capirci nulla . (quindi prima di creare cose folli , vorrei accendere un led alla volta senza cicli o sequenze)

Come faccio ad accendere solo il led 9?

//Connesso al Pin DS del 74HC595
int clock = 10;
//Connesso al Pin ST_CP del 74HC595
int latch = 9;
//Connesso al Pin SH_CP del 74HC595
int data = 8;

byte pattern[]=
{   
B00000001,   
B00000010,   
B00000100,   
B00001000,   
B00010000,   
B00100000,   
B01000000,   
B10000000,   
B01000000,   
B00100000,   
B00010000,   
B00001000,   
B00000100,   
B00000010 
}; 
int index =0; //legge la riga del disegno
int count=sizeof(pattern); //grandezza dell'array
void setup() 
{   
pinMode(clock,OUTPUT);   
pinMode(latch,OUTPUT);   
pinMode(data,OUTPUT); 
} 
void loop() 
{   
digitalWrite(latch,LOW); //chiude il latch   
shiftOut(data,clock,MSBFIRST,pattern[index]); //LSBFIRST MSBFIRST//scrive la sequenza
digitalWrite(latch,HIGH);   //apre l'uscita 
delay(500); //tempo di accenzione   
//index++;    //incrementa la lettua tolto per leggere solo la prima riga
if(index>=count) //azzera l'index     
index=0; 
}

grazie

P.s. altro quesito , perchè in vari esempi trovo le resistenze sull'anodo e in altri sul catodo ?

Puoi metterne in cascata quanti ne vuoi (compatibilmente con i tempi di propagazione che nel caso della ridicolmente bassa velocità di uno shiftOut non rappresentano un problema, e con la corrente erogabile da un pin per comandare contemporaneamente tutti gli ingressi latch/clock dei registri).

Va fatto uno shifOut per ogni registro. I bit del primo shiftOut scorreranno verso il registro più lontano da Arduino, quelli dell'ultimo shiftOut saranno contenuti nel registro più vicino.

esatto, grazie , funziona perfettamente, dal tinker vedo un ritardo minimo ma sicuramente è più lento .

Ora ho capito il senso. grazie ancora

codice prima
shiftOut(data,clock,MSBFIRST,pattern[1])

shiftOut(data,clock,MSBFIRST,pattern[2])

codice dopo

intendi così?

quindi il primo shiftout mi pilotera il secondo sr
e il secondo pilota il primo sr

garzone:
quindi il primo shiftout mi pilotera il secondo sr e il secondo pilota il primo sr

Esatto (se per secondo sr intendi quello più lontano).

per le resistenze dei led , è buon uso metterle tra shift e i led o verso la massa non cambia nulla?

Non cambia nulla.

Se usi 2 Shift Register a 8 bit in cascata devi anche mandare 2 volte 8 bit di dati.
Se mandi solo 8 bit allora alla sucessiva spedizione mandi i 8 bit spediti precdentemente al secondo Shift Register e succede quello cha hai descritto.
Ciao Uwe

garzone:
Quindi ho messo due shift register in cascata pensando di poter inviare byte personalizzati e provare ad accendere solo uno alla volta

Secondo me trovi tutte le risposte e vari esempi QUI... :wink:

grazie a tutti per le utili informazioni e la rapidità nelle risposte.
ho lavorato un pochino e letto vari articoli , ripartendo dalla lezione 0 sull'elettronica..
Qualcosa di studiato 25 anni fa è tornato a galla.

Comunque tutto funziona perfettamente.

L'idea era creare una lucina per la notte per il mio bimbo, e sono soddisfatto. Appena pronta posterò un video , delle varie sequenze di luci.
Intanto mi diverto aggiungendo un pulsante per scegliere la sequenza.

grazie ancora siete preziosi

a presto