Problem mit definition einer Variable

Moin,

heute haben wir in der Schule versucht Bit-Muster auf zwei in Reihe geschalteten 74595 Schieberegister auszugeben.

Das klappt auch soweit ganz gut :

vor der setup Routine haben wir die Bit Muster folgendermaßen definiert :

int muster1[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,1};
.
.
.
int muster59[14] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1};

nun möchte ich aber gerne die Muster 1-59 mit einer weiter Variable einlesen und dann ausgeben.

Es soll also anstatt muster1[14] , muster(x)[14] in das Schieberegister.

Kann mir jemand weiterhelfen wie man das umsetzen kann ?

In das Schieberegister schreibe ich die Bit-Muster mit folgenden Zeilen :

for (int i=0; i<14; i++) {
digitalWrite(shiftPin, LOW);
digitalWrite(dataPin, muster1*);*

  • digitalWrite(shiftPin, HIGH);*
    }
    nun muss ich aber diese Zeilen für das Muster (1-59) 59 mal nacheinander ins Listing einfügen um die gewünschte Ausgabe zu erhalten.Dies würde ich gerne einfacher gestalten.
    Gruß
    Christian

int muster1[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,1};

Damit verbrauchst du 224 Bit um 14 Bit darzustellen.

Tipp:
Verwende die Funktion shiftOut()

Verwende den Datentype "unsigned int" um bis zu 16 Bit zu halten.
Verwende den Datentype "unsigned long" um bis zu 32 Bit zu halten.
Verwende den Datentype "unsigned long long" um bis zu 64 Bit zu halten.

...und
wenn du Bitmuster darstellen willst bietet sich die binärer Schreibweise für Zahlen an z.B.:

unsigned int muster[] = {
    0b00000000000001,
    0b10010010010010,
    0b11101110101010,
    0b00110101001001};

und so weiter.
Zum Schieberegister kannst du diese Muster dann ganz einfach (wie bereits erwähnt) mit shiftOut schicken z.B.:

// shiftOut(dataPin, clockPin, bitOrder, value) 
shiftOut(2, 3, MSBFIRST, muster[2]);