Buongiorno, ho un problema con lo shift register TPIC6C595 spero di aver postato nella sezione giusta. Ho fatto un piccolo schema di collegamento a mano quindi spero si capisca la mia scrittura e ciò che ho fatto; questo è una piccola parte di un progettino che devo fare e necessariamente devo usare sia Arduino UNO che l'alimentatore da basetta (5V, 700mA).
Ciò che voglio fare è semplicemente accendere tutti i led e spegnerli ma non funziona e non so se è un errore dovuto a un scorretto collegamento, o se la mia idea è di partenza sbagliata o se ho sbagliato del tutto lo sketch. Premetto di aver collegato anche tra loro la massa di Arduino e la massa dell'alimentatore (sperando di averle collegate giuste) ma i led non si accendono e spengono correttamente; magari ho sbagliato a usare la funzione shiftOut
Riporto il codice
#define DATA_PIN 7
#define CK_PIN 8
#define LATCH_PIN 9
#define RESET_PIN 10
void setup() {
pinMode(DATA_PIN, OUTPUT);
pinMode(CK_PIN, OUTPUT);
pinMode(LATCH_PIN, OUTPUT);
pinMode(RESET_PIN, OUTPUT);
Serial.begin(9600);
//resetto i registri
digitalWrite(RESET_PIN, LOW);
delay(2000);
digitalWrite(RESET_PIN, HIGH);
Serial.println("registro resettato");
}
void loop() {
accendiLuci();
delay(2000);
spegniLuci();
delay(2000);
}
void writeRegister(byte value){
digitalWrite(LATCH_PIN, LOW);
shiftOut(DATA_PIN, CK_PIN, MSBFIRST, value);
digitalWrite(LATCH_PIN, HIGH);
}
void accendiLuci(){
writeRegister(0xFF);
}
void spegniLuci(){
writeRegister(0x00);
}
Grazie a chi mi può aiutare
In questo modo non lo stai alimentanto correttamente.
Il condensatore da 100nF va tra Vcc e GND e non in serie a Vcc
Hai ragione ho sbagliato a disegnare lo schema, mia distrazione.
Non sono bravo a farlo 
Ho ricaricato lo schema, non so come cambiarlo al post principale. Per alimentarsi dovrebbe essere alimentato dato che qualche led si accende, non tutti insieme come vorrei. Ho provato a fare anche uno scorrimento e si accendono quindi li ho collegati giusti ma tutti insieme non riesco quindi sbaglio qualcosa
Mi sa che hai anche scambiato le funzioni dei pin RCK e SRCK.
Il segnale di latch lo devi dare sul pin RCK mentre il clock su SRCK, fai sempre riferimento al datasheet per i collegamenti!
Effettivamente non avevo letto bene il datasheet
"The typical application of TPIC6C595 is automotive cluster driver. In this example, two TPIC6C595 power shift registers are cascaded and used to turn on LEDs in the cluster panel. In this case, the LED must be updated after all 16 bits of data have been loaded into the serial shift registers. MCU outputs the data to the serial input (SER IN) while clocking the shift register clock (SRCK). After the 16th clock, a pulse to the register clock (RCK) transfers the data to the storage registers. If output enable (G) is low, then the LEDs are turned on corresponding to the status word with ones being on and zeros off. With this simple scheme, MCU can use the SPI interface to turn on 16 LEDs using only two ICs as illustrated in Figure 14"
Mi ero perso questa parte in cui in effetti specifica che l'impulso da dare per trasferire i dati ai registri è proprio il pin RCK, erano proprio da scambiare ora funzionano perfettamente.
Faccio giusto un'altra domanda, se volessi collegare in cascata un'altro shift register quando uso la funzione shiftOut il primo byte che mando arriva al secondo shift register o al primo?
Perfect I understand the reply, thank you so much