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