5x5x5 RGB Led Cube Programmierung?

Hallo Forum!

Ich habe einen 5x5x5 RGB Led Cube nach der Vorlage von Kevin Darrah gebaut, einfach ein bisschen kleiner. Im Gegensatz zu ihm habe ich für die Ebenen kein einzelnes 74HC595 Shift Register verwendet, sondern Teile es mit den ersten drei blauen Leds, So dass sich eine Shiftregisterreihenfolge folgender Art ergibt:

L1,L2,L3,L4,L5,1,2,3 4,5,6,7,8,9,10,11 12,13,14,15,16,17,18,19 20,21,22,23,24,25,1,2, 3,4,5,6,7,8,9,10 11,12,13,14,15,16,17,18 19,20,21,22,23,24,25,1 2,3,4,5,6,7,8,9 10,11,12,13,14,15,16,17 18,19,20,21,22,23,24,25,

Also kann ich sein Programm zwar verwenden und man kann einzelne Programmauschnitte erkennen, jedoch stimmen sie natürlich nicht wirklich überein was ja logisch ist. Deshalb versuchte ich einmal ganz einfach mit einem Testprogramm die einzelnen Leds ansteuern.
Das folgende Programm steuert alle grünen Pins an:

//Pin connected to ST_CP of 74HC595
int latchPin = 6;
//Pin connected to SH_CP of 74HC595
int clockPin = 13;
////Pin connected to DS of 74HC595
int dataPin = 11;

byte data[10] = {B00000000,B00000000,B00000000,B11111110,B11111111,B11111111,B10000001,B00000000,B00000000,B00111110};

void setup() {
  //set pins to output because they are addressed in the main loop
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  //count up routine
   digitalWrite(latchPin, LOW);
for(int i = 0;i<10;i++){
    //ground latchPin and hold low for as long as you are transmitting
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, MSBFIRST, data[i]);  

}
    //return the latch pin high to signal chip that it
    //no longer needs to listen for information
    digitalWrite(latchPin, HIGH);
    

  
}

Nach meiner Logik wäre die ansteuerung von Grün folgende:

byte data[10] = {B00000000, B00000000,B00000000,B011111111, B11111111, B11111111 ,B11000000, B00000000, B00000000, B00011111}

anstatt:

byte data[10] = {B00000000,B00000000,B00000000,B11111110,B11111111,B11111111,B10000001,B00000000,
B00000000,B00111110}

(wie in meinem Code mit welchem wirklich nur die grünen leuchten)

wiso muss ich die Bits so verdrehen? Das macht für mich keinen Sinn…
Ich möchte am Schluss eine ähnlich praktisches Programm haben wie Kevin Darrah.

Kann mir da jemand helfen? Ich bin leider ein Shift Register Anfänger

Aus dem anderen Thread

Hallo Beerlillio!

Was möchtest du uns damit sagen? Das du den fertigen Code brauchst oder dass du das nur aufgebaut hast.

Ich kann nicht einschätzen, wie gut deine Kenntnisse im programmieren sind. Solltest du aber gerade erst am Anfang stehen, hast du dir doofes erstes Projekt ausgesucht. Das ist von der Menge schon so umfangreich, dass man da kaum einen Lerneffekt erzielen kann. Sinnvoller wäre hier der Beginn mit einem 3x3x3 oder 4x4x4 SINGLE Color Led Cube gewesen.

Selbst das benötigt schon ein gewissen Teil an Einarbeitungszeit, wenn man sich entsprechend um die Multiplextimings kümmern muss.

Mit deiner Auflistung kann ich ehrlich gesagt nichts anfangen.

Arbeite diese Seite durch

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister

Dann verstehst du auch, wieso das ganze spiegelverkehrt gesendet wird. Bitte keine Doppelpostings.

Vielen Dank für den Link habe Ihn durchgelesen. Nach der Theorie müsste eigentlich meine Annahme stimmen, wie ich die Register füttern müsste, nur leider zeigt die Praxis etwas anderes an. Es macht für mich einfach keinen Sinn, dass die Bits nicht so in die Register übertragen werden können wie ich es in der Fragestellung geschrieben habe.

Ich habe bereits einen 4x4x4 Cube gemacht jedoch ohne Shiftregister.