Partiamo da un presupposto, questo:
Tu collegherai i 2 shift come in figura:
con il pin Q7' del primo shift che entra nel pin DS del 2° shift.
Poi, userai la funzione shiftOut per spedire i dati:
http://arduino.cc/en/Reference/ShiftOut
collegando i pin latch e clock dei 2 shift register insieme ed il pin DS del 1° registro.
Adesso, la cosa da capire è:
ogni shift register ha un buffer interno di 8 bit (che corrispondono agli 8 piedin), all'invio del 9° bit il 1° bit entrato uscirà dal pin Q7' ed entrerà nel pin DS del 2° registro.
Quindi per inserire i dati nel 2° registro dovrai spedire 2 byte. L'ordine di invio che scegli con la funzione shiftOut, MSBFIRST o LSBFIRST, decide quale sarà il 1° bit ad entrare e quindi il 1° bit a uscire quando il registro del primo shift sarà pieno.
Per capire, mettiamo che tu abbia la situazione in cui hai 2 byte di valore
11000000
00000000
Se li spedisci come MSBFIRST, verranno mandati così:
prima 1, poi 1, poi 0, poi 0, poi 0, poi 0 ecc...
Come vedi, i due "1" sono entrati per primi e saranno anche posizionati in fondo al 2° shift. La memoria finale dei 2 shift sarà infatti questa:
00000000 00000011
Viceversa se scegli di mandare prima il bit meno significativo.
