Array anlegen für 3 Schieberegister

Hallo zusammen, ich habe nun folgenden Code geschrieben und er funktioniert auch wie er soll. Das ganze soll eine Steuerung für 18 LED Spots sein. ( 230V mit Relais für je ein Spot)
Ich möchte das LampenPin Array gern in ein 2 dim. Array umwandeln. ( wurde mir hier mal empfohlen :slight_smile: )
Damit ich jede einzelne LED auch ansteuern kann.
Leider komme ich damit nicht wirklich weiter. Ich verstehe nicht, wie ich dann shiften muss, damit alle Pins ihre werte bekommen oder wie ich eine bestimmte Anzahl an Pins mit einmal ansteuere oder wie füge ich die Pins zu einem Muster zusammen.
Für einzelne Werte oder ein Lauflicht, bekomme ich hin. ( Aufgabe aus einem Lehrbuch von Bartman) Aber eben nicht für alle 18.
Ich füge mal das Array ein und im Anhang der gesamte Code. :smiley:

   long LampenPin [8] = { 0B000000000000000000000000, // Array_Wert 0  alle aus
	                  0B111111111111111111111111, // Array_Wert 1  alle An 
		          0B000000001111111100000000, // Array_Wert 2 vordere Hälfte AN
			  0B000000000000000011111111, // Array_Wert 3 hintere Hälte AN
		          0B000000001001001100110011, // Array_Wert 4 lange Seite hinten AN
			  0B000000000110110011001100, // Array_Wert 5 lange Seite vorn AN
			  0B000000001111100111111001, // Array_Wert 6 AUßenring AN
			  0B000000000110011000110110, }; // Array_Wert 7 Innenring AN
						  
						  //Array für 3 Schieberegister

MfG Marco

Micha_V3.ino (5.3 KB)

Du brauchst keinen Aufstand zu machen und jede LED als Byte zu definieren. Das wird eher komplizierter.

Einzelne Bits kann man ganz einfach mit bitSet(), bitClear() oder bitWrite() ändern:
http://arduino.cc/en/Reference/BitSet
http://arduino.cc/en/Reference/BitClear
http://arduino.cc/en/Reference/BitWrite

Das sind Makros für die üblichen Schiebe- und Logik-Operationen:

#define bitSet(value, bit) ((value) |= (1UL << (bit)))
#define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))

Ansonsten kannst du die Werte auch mit >>= nach rechts und mit <<= nach links schieben:
http://arduino.cc/en/Reference/Bitshift