Usando uno sketch che mi illumina tutti i led uno alla volta, va tutto bene
/* Sketch cubo LED 4x4x4 per l'esame
creato da: Salvatore Marcellini */
//Definisco le variabili
int latch= 8; //pin del latch degli 74HC595
int clock= 12; //pin del clock degli 74HC595
int data= 11; //pin dove gli 74HC595 ricevono l'input
int npn[4]= {5, 6, 7, 9}; // array con i pin dei transistor
int i; //contatore
int pausa= 100;
// Setto tutti i pin su OUTPUT
void setup ()
{
pinMode(latch, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(data, OUTPUT);
for(i=0;i<4;i++)
{
pinMode(npn[i], OUTPUT);
}
}
//inizio del programma
void loop ()
{
for(i=0;i<4;i++)
{
digitalWrite(npn[i], HIGH); //attivo il livello corrispondente al contatore
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b10000000); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b01000000); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b00100000); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b00010000); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b00001000); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b00000100); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b00000010); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b00000001); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b00000000); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b10000000); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b01000000); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b00100000); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b00010000); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b00001000); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b00000100); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b00000010); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b00000000); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b00000001); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(npn[i], LOW);
}
}
Quindi credo che i collegamenti vadano bene no?
Però se voglio accendere una colonna si e una no, come qui
/* Sketch cubo LED 4x4x4 per l'esame
creato da: Salvatore Marcellini */
//Definisco le variabili
int latch= 8; //pin del latch degli 74HC595
int clock= 12; //pin del clock degli 74HC595
int data= 11; //pin dove gli 74HC595 ricevono l'input
int npn[4]= {5, 6, 7, 9}; // array con i pin dei transistor
int i; //contatore
int pausa= 1000;
// Setto tutti i pin su OUTPUT
void setup ()
{
pinMode(latch, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(data, OUTPUT);
for(i=0;i<4;i++)
{
pinMode(npn[i], OUTPUT);
}
}
//inizio del programma
void loop ()
{
for(i=0;i<4;i++)
{
digitalWrite(npn[i], HIGH); //attivo il livello corrispondente al contatore
digitalWrite(latch, LOW); //latch basso per passare la serie di bit
shiftOut(data, clock, MSBFIRST, 0b10101010); //prima serie di bit dello 74HC595 n°1
shiftOut(data, clock, MSBFIRST, 0b10101010); //seconda serie di bit dello 74HC595 n°2
digitalWrite(latch, HIGH); //riattivo il latch per attivare le uscite
delay(pausa); //pausa
digitalWrite(npn[i], LOW);
}
}
Non mi accende una colonna si e una no, ma me le accende quasi tutte tranne 3.
Quindi direi che sono io a non aver capito come programmare in modo giusto mi sa xD