4x4x4 Cube mit Arduino Nano und Schieberegister

Guten Abend,

ich wollte einen 4x4x4 Cube mit Schieberegistern ansteuern, da ich eine kleine Übung machen wollte, bevor ich einen 8x8x8 RGB Cube mache :smiley:

Ich nutze die 74HC595 und nen Nano mit nem ATmega328

Mein Problem:
Ich scheiterte schon bei einem Testdurchlauf für den Cube und finde leider keinen Fehler.
Verkablungen sind alle richtig und so wie im Schaltplan (siehe Anhänge)

Ist mein Programm falsch oder könnte ich einfach nur defekte Nano's haben? Ich habe allerdings schon verschiedene ausprobiert und es würde mich dann schon wundern. :confused:
Der Serielle Monitor gibt nichts aus.

const byte allePins[] = {2, 3, 4, 5, 6, 7, 8, 9};
int shiftPin = 2;
int storePin = 3;
int dataPin1 = 4;
int dataPin2 = 5;
const byte alleLayers[] = {6,7,8,9};
int layer1 = 6;
int layer2 = 7;
int layer3 = 8;
int layer4 = 9;

int aus[8] = {0,0,0,0,0,0,0,0};
int an[8] = {1,1,1,1,1,1,1,1};

void setup() {
  Serial.println("Start");
  for(int i=0; i<sizeof(allePins); i++) {
    pinMode(allePins[i], OUTPUT);
  }
  for(int i=0; i<sizeof(alleLayers); i++) {
    pinMode(alleLayers[i], LOW);
  }
  
  digitalWrite(storePin, LOW);
  for (int i=0; i<8; i++) {
    digitalWrite(shiftPin, LOW);
    digitalWrite(dataPin1, an[i]);
    digitalWrite(shiftPin, HIGH);
    delay(50);
  }
  digitalWrite(storePin, HIGH);
  Serial.println("1.Hälfte AN");
  
  digitalWrite(storePin, LOW);
  for (int i=0; i<8; i++) {
    digitalWrite(shiftPin, LOW);
    digitalWrite(dataPin2, an[i]);
    digitalWrite(shiftPin, HIGH);
    delay(50);
  }
  digitalWrite(storePin, HIGH);
  Serial.println("2.Hälfte AN");
  
  delay(250);
  
  digitalWrite(storePin, LOW);
  for (int i=0; i<8; i++) {
    digitalWrite(shiftPin, LOW);
    digitalWrite(dataPin1, aus[i]);
    digitalWrite(shiftPin, HIGH);
  }
  digitalWrite(storePin, HIGH);
  Serial.println("1.Hälfte AUS");
  
  digitalWrite(storePin, LOW);
  for (int i=0; i<8; i++) {
    digitalWrite(shiftPin, LOW);
    digitalWrite(dataPin2, aus[i]);
    digitalWrite(shiftPin, HIGH);
  }
  digitalWrite(storePin, HIGH);
  Serial.println("2.Hälfte AUS");
}

void loop() {
  
}

Soltanius:
Der Serielle Monitor gibt nichts aus.

Weil Du Serial.begin(Baudrate); vergessen hast.

Gruß Tommy

Oh Gott.. Eigentlich peinlich.. Danke..

Nun mein Problem, die Register schalten noch immer nicht..
Hab ich es vom Programm aus so richtig?

Soltanius:
Hab ich es vom Programm aus so richtig?

Schwer zu sagen, es ist IMO ziemlich wirr. Vor Allem verschleuderst Du haufenweise RAM durch eine ziemlich seltsame Verwendung „teurer“ Typen.

Und die Verkabelung mit Krokoklemmen macht bestimmt viel Spaß ... das Bild vom 8x8x8-Cube will ich sehen! Am besten nachher :slight_smile:

Probiere doch erst einmal ein Minimalding und kontrolliere am Ausgang des/der Register(s), ob da das Gewünschte passiert.

Gruß

Gregor


So machst Du den Arduino kaputt.
Hast Du mal ausgerechnet wieviel Strom 16 LED denn brauchen? Diesen Strom willst Du von einem Pin des Arduino herauszuholen?
Grüße Uwe

gregorss:
Und die Verkabelung mit Krokoklemmen macht bestimmt viel Spaß ... das Bild vom 8x8x8-Cube will ich sehen! Am besten nachher :slight_smile:

Die Krokoklemmen habe ich mit Absicht verwendet, da ich keine Kabel unter der Platine anlöten wollte, bevor ich nicht weiß, ob die Funktion mit den Register etc. so abläuft, wie gedacht..
Ich habe Extra Jede LED vorher einmal getestet, ob es so ohne Kurzschluss läuft.

Den 8x8x8 Cube werde ich nicht exakt so machen, da ich diesen auf'n Holzbrett machen möchte und vorher schon alles richtig planen werde, weil es kein günstiges Projekt ist :slight_smile:

gregorss:
Probiere doch erst einmal ein Minimalding und kontrolliere am Ausgang des/der Register(s), ob da das Gewünschte passiert.

Wird gemacht, kleinen Moment :slight_smile:

uwefed:
So machst Du den Arduino kaputt.
Hast Du mal ausgerechnet wieviel Strom 16 LED denn brauchen? Diesen Strom willst Du von einem Pin des Arduino herauszuholen?
Grüße Uwe

Ich habe gehofft, dass ich zu erst ohne Transistoren testen kann..
Ich habe nur NPN Transitoren, die ich für die Layer verwenden könnte und noch keine PNP die von den Schift Registern geschaltet werden können. Mist..

gregorss:
Probiere doch erst einmal ein Minimalding und kontrolliere am Ausgang des/der Register(s), ob da das Gewünschte passiert.

Es passiert rein gar nichts.
Testvorgang:

Nano -> Schiftregister -> Widerstand -> LED -> GND

und nein. Ich habe Anode/Kathode nicht vertauscht :wink:

Hab jetzt alles auf eine kleine Version mit nur 16 LEDs statt 64 umgesteckt (pro Register 8).
Den Würfel schließe ich dann erst wieder an, wenn ich PNP Transistoren habe.
Welche könnt ihr für diese noch kleinen Spannungen und Strom empfehlen?

NPN Transistoren habe ich BC337-40 - dieser kann 800mA was für einen Layer ausreichen würde (16x20mA = 320mA)

Der PNP müsste nur 80, besser 100mA können, da an diesem nur 4 LEDs hängen