Es hat funktioniert!
Lasse jetzt im ShiftOut alle 3 Daten gleichzeitig verarbeiten, so dass ich nur nach die einzelnen Daten Angeben muss, die Pins verändern sich ja nicht mehr.
void shiftOut(byte myDataOut1, byte myDataOut2, byte myDataOut3) {
int i = 0;
int pinState1;
int pinState2;
int pinState3;
digitalWrite(data1, 0);
digitalWrite(data2, 0);
digitalWrite(data3, 0);
digitalWrite(clockPin, 0);
for (i = 7; i >= 0; i--) {
digitalWrite(clockPin, 0);
if ( myDataOut1 & (1 << i) ) {
pinState1 = 1;
}
else {
pinState1 = 0;
}
if ( myDataOut2 & (1 << i) ) {
pinState2 = 1;
}
else {
pinState2 = 0;
}
if ( myDataOut3 & (1 << i) ) {
pinState3 = 1;
}
else {
pinState3 = 0;
}
digitalWrite(data1, pinState1);
digitalWrite(data2, pinState2);
digitalWrite(data3, pinState3);
digitalWrite(clockPin, 1);
digitalWrite(data1, 0);
digitalWrite(data2, 0);
digitalWrite(data3, 0);
}
digitalWrite(clockPin, 0);
}
Hier, wie man das ShiftOut jetzt anspricht:
void rotor() {
for (int i = 0; i < 6; i++) {
dataArray1 = Array01[i];
dataArray2 = Array01_1[i];
digitalWrite(latchPin, 0);
shiftOut(dataArray1, dataArray1, dataArray1);
shiftOut(dataArray2, dataArray2, dataArray2);
digitalWrite(latchPin, 1);
for (int j = 0; j < 25; j++) {
digitalWrite(layer1, HIGH);
delay(1);
digitalWrite(layer1, LOW);
digitalWrite(layer2, HIGH);
delay(1);
digitalWrite(layer2, LOW);
digitalWrite(layer3, HIGH);
delay(1);
digitalWrite(layer3, LOW);
digitalWrite(layer4, HIGH);
delay(1);
digitalWrite(layer4, LOW);
}
}
}
Ergebnis: Alle 3 Reihen, führen gleichzeitig, die angegeben Daten aus.
Dank euch, dass ich auf den richtigen Pfad mit den Clock Pins gekommen bin.