mmmmm.... purtroppo l'entusiasmo iniziale provato su un blinkè miseramente sfumato quando ho applicato il concetto allo scketch del cubo...
Faccio un esempio per la A e per la B:
int Abilitazione = 8;
int Seriale = 12;
int Data = 13;
int Seriale1 = 10;
int Data1 = 11;
int Seriale2 = 7;
int Data2 = 9;
int Seriale3 = 6;
int Data3 = 5;
int Seriale4 = 4;
int Data4 = 3;
byte dato = 0;
byte dato1 = 0;
byte dato2 = 0;
byte dato3 = 0;
byte dato4 = 0;
void A(){
Serial.println(dato,DEC);
digitalWrite(Abilitazione, LOW);
shiftOut(Seriale, Data, LSBFIRST, dato);
digitalWrite(Abilitazione, HIGH);
dato=0b100000100;
Serial.println(dato1,DEC);
digitalWrite(Abilitazione, LOW);
shiftOut(Seriale1, Data1, LSBFIRST, dato1);
digitalWrite(Abilitazione, HIGH);
dato1=0b10010000;
Serial.println(dato2,DEC);
digitalWrite(Abilitazione, LOW);
shiftOut(Seriale2, Data2, LSBFIRST, dato2);
digitalWrite(Abilitazione, HIGH);
dato2=0b11010000;
Serial.println(dato3,DEC);
digitalWrite(Abilitazione, LOW);
shiftOut(Seriale3, Data3, LSBFIRST, dato3);
digitalWrite(Abilitazione, HIGH);
dato3=0b10010000;
Serial.println(dato4,DEC);
digitalWrite(Abilitazione, LOW);
shiftOut(Seriale4, Data4, LSBFIRST, dato4);
digitalWrite(Abilitazione, HIGH);
dato4=0b10000100;
}
void B(){
{
Serial.println(dato,DEC);
digitalWrite(Abilitazione, LOW);
shiftOut(Seriale, Data, LSBFIRST, dato);
digitalWrite(Abilitazione, HIGH);
dato=0b111111111;
Serial.println(dato1,DEC);
digitalWrite(Abilitazione, LOW);
shiftOut(Seriale1, Data1, LSBFIRST, dato1);
digitalWrite(Abilitazione, HIGH);
dato1=0b10110100;
Serial.println(dato2,DEC);
digitalWrite(Abilitazione, LOW);
shiftOut(Seriale2, Data2, LSBFIRST, dato2);
digitalWrite(Abilitazione, HIGH);
dato2=0b10010100;
Serial.println(dato3,DEC);
digitalWrite(Abilitazione, LOW);
shiftOut(Seriale3, Data3, LSBFIRST, dato3);
digitalWrite(Abilitazione, HIGH);
dato3=0b10001100;
Serial.println(dato4,DEC);
digitalWrite(Abilitazione, LOW);
shiftOut(Seriale4, Data4, LSBFIRST, dato4);
digitalWrite(Abilitazione, HIGH);
dato4=0b10000100;
}
void setup()
{
pinMode(Abilitazione, OUTPUT);
pinMode(Data, OUTPUT);
pinMode(Seriale, OUTPUT);
pinMode(Data1, OUTPUT);
pinMode(Seriale1, OUTPUT);
pinMode(Data2, OUTPUT);
pinMode(Seriale2, OUTPUT);
pinMode(Data3, OUTPUT);
pinMode(Seriale3, OUTPUT);
pinMode(Data4, OUTPUT);
pinMode(Seriale4, OUTPUT);
Serial.begin(9600);
}
void loop(){
A();
delay(1000);
B();
delay(1000);
}
Praticamente dovrebbe alternare la A e la B ogni secondo, ma la compilazione non va abuon fine...