LED Würfel - Die falschen Leds leuchten

Hallo zusammen
Ich habe einen 8x8x8 LED Würfel gebaut. Nun habe ich aber das Problem, dass alle Led’s die nicht leuchten sollten, leuchten und die die leuchten sollen nicht leuchten. Es ist also gerade vertauscht. Kann mir jemand sagen wie ich dieses Problem beheben muss? Oder wenigstens wo jemand schon einmal das Problem gehabt hat, weil ich nichts finde, da ich nicht genau weiss wie ich es auf Englisch beschreiben soll. Den Würfel habe ich mit dieser Anleitung gemacht.

Ich habe ein Testprogramm laufen lassen:

//Test an 8x8x8 LED cube


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

byte pinVals[8];
 int zLayer = 0;
 int xc = 0;
 int yc = 0;

void setup(){
    //layer pins
  for(int i = 2; i < 10; i++)
  {
    pinMode(i, OUTPUT);
    digitalWrite(i, LOW);
  }

  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);

  digitalWrite(latchPin,LOW);
  digitalWrite(dataPin,LOW);
  digitalWrite(clockPin,LOW);
  
  bitSet(pinVals[0], 0);
  digitalWrite(zLayer + 2, HIGH);
}
 
void loop(){
  digitalWrite(latchPin, LOW);
  for(int i = 0; i < 8; i++){
   shiftOut(dataPin, clockPin, MSBFIRST, pinVals[i]);
  }
  digitalWrite(latchPin, HIGH);

  //Increase for slower effect
  delay(50);
  
  //Set the display bits
  bitClear(pinVals[yc], xc);
  xc++;
  if(xc == 8){
    xc = 0;
    yc++;
    if(yc == 8){
      yc = 0;
      //next z layer
        digitalWrite(zLayer + 2, LOW);
        zLayer++;
        if(zLayer >= 8){
          zLayer = 0;
        }
        digitalWrite(zLayer + 2, HIGH);
    }
  }
  bitSet(pinVals[yc], xc);
}

Und hier ist ein Foto von einem Plan (Ich weiss er ist katastrophal, aber es ist mein erster… und ich hatte nicht viel Zeit. Tut mir Leid)

Vielen Dank

Hi

Das klingt nach negativer Logik.
Am Einfachsten: negiere ALLES, bevor Du Das zu den LEDs schickst.
(Die Seite kommt bei mir nicht, ggf. lasse ich auch einfach zu Wenig im Browser zu ...)
Die LED-Werte werden ja wohl in einem Array stehen und irgend wann gemultiplext - genau Da, wo die LED-Werte ausgelesen werden, 'drehst Du das Signal um'.

MfG

Schaltplan?
Aussagekräftige Fotos vom Aufbau?
Code?

Rintin:
Schaltplan?
Aussagekräftige Fotos vom Aufbau?
Code?

Ich habe leider keinen Schaltplan, nur die Bilder von der Anleitung. Ich habe aber den Code hineingetan, aber Bilder bringen nicht, da alles voller Kabel ist und unter einer Platte versteckt.

LEDs verkehrt herum eingelötet? Normale Gegentaktausgänge in ICs haben immer 2 Transistoren, einen gegen Masse und einen gegen plus. Diese leiten wechselweise, was du von außen als Pegel messen kannst. Beim multiplexen, wenn du keine weiteren externen Treibertransistoren verwendest, hängt die LED gewissermaßen zwischen 2 Ausgängen. Wenn sie falsch rum eingelötet ist, dann leitet - und damit leuchtet sie genau dann, wenn sie nicht soll. :wink:
Aber ehe du alles auseinanderlötest, würde ich lieber die Logik in der Software ändern, das geht schneller.

Ok... die wichtige Stelle ist etwas wage beschrieben... Hast du einen ULN2803 verbaut?

Jace11s:
Ich habe leider keinen Schaltplan, nur die Bilder von der Anleitung.....

Den kannst du aber zeichnen. Eine Bleistiftzeichnung reicht da aus.
Dann können wir evtl. auch deinen Fehler erkennen.

Rintin:
Ok... die wichtige Stelle ist etwas wage beschrieben... Hast du einen ULN2803 verbaut?

Ja habe ich. Und die anderen Chips sind 75HC595

nix_mehr_frei:
LEDs verkehrt herum eingelötet? Normale Gegentaktausgänge in ICs haben immer 2 Transistoren, einen gegen Masse und einen gegen plus. Diese leiten wechselweise, was du von außen als Pegel messen kannst. Beim multiplexen, wenn du keine weiteren externen Treibertransistoren verwendest, hängt die LED gewissermaßen zwischen 2 Ausgängen. Wenn sie falsch rum eingelötet ist, dann leitet - und damit leuchtet sie genau dann, wenn sie nicht soll. :wink:
Aber ehe du alles auseinanderlötest, würde ich lieber die Logik in der Software ändern, das geht schneller.

Ich habe wirklich alle falsch herum eingelötet. Ich habe zuerst einen 3x3x3 würfel nach einer Anleitung gemacht. Und habe angenommen, dass alle Leds immer gleich herum gebogen werden(die Beinchen). Nun ist es möglich, dass aber die Leds weniger stark leuchten, da sie verkehrt herum sind, oder liegt das nur daran, dass die Chips nicht so viel Strom spenden können? Und würde es einen Unterschied machen, wenn ich trotz Aufwand, alle umändern würde?

Jace11s:
Ich wirklich alle falsch herum eingelötet. Ich habe zuerst einen 3x3x3 würfel nach einer Anleitung gemacht. Und habe angenommen, dass alle Leds immer gleich herum gebogen werden(die Beinchen). Nun ist es möglich, dass aber die Leds weniger stark leuchten, da sie verkehrt herum sind, oder liegt das nur daran, dass die Chips nicht so viel Strom spenden können? Und würde es einen Unterschied machen, wenn ich trotz Aufwand, alle umändern würde?

Da solltest du endlich mal ein Schaltbild liefern, dann wissen wir auch wo und wie du deine Leds angeschlossen hast.
Ein ULN2803 kann für eine einfache Led genug Strom liefern, wenn du alles richtig machst.

HotSystems:
Da solltest du endlich mal ein Schaltbild liefern, dann wissen wir auch wo und wie du deine Leds angeschlossen hast.
Ein ULN2803 kann für eine einfache Led genug Strom liefern, wenn du alles richtig machst.

Ich habe es in die Hauptfrage getan. Aber ich weiss nicht ob es zu brauchen ist...

Hi

Bevor ich mir die ganze Löterei erneut antun würde, schriebe ich das Programm um.

IRGENDWO müssen ja die Informationen her kommen, welche LED gerade jetzt leuchten soll - und genau dort negierst Du diese Zahl - alle Einsen (LED an) werden zu Nullen (LED aus) und umgekehrt.

Ärgerlich hier dann halt, daß Du die Leuchtmuster 'umgedreht' programmieren musst oder Dir ein Hilfsmittel programmierst, Welches Das macht.
Für die Wartungsfreundlichkeit wäre Umlöten der Weg (damit Du in einem halben Jahr auch noch die Animation so drauf bekommst, wie Du Das Dir gedacht hast).

MfG

Jace11s:
Ich habe es in die Hauptfrage getan. Aber ich weiss nicht ob es zu brauchen ist...

Naja, ich erkenne deinen Willen an, aber in der Schaltung ist leider nichts zu erkennen.
Für mich ist es nicht zu "gebrauchen".

Der ULN2803 kann nur sinnvoll einen Pin auf Ground ziehen. Wo jetzt die Spannung für den Cube herkommt ist mir ein Rätsel. Vielleicht direkt auf dem Arduino pin?

Um den Cube zu retten musst du die Beschaltung ein wenig ändern. Den ULN2803 durch etwas ersetzen was den Ausgangpin auf die Versorgungsspannung ziehen kann. Ein UDN2981 könnte da gehen.

Danach müsste man schauen, wie man die Software reparieren muss.

Okey Vielen Dank an alle die mir geholfen haben. Ich werde abschätzen, was die sinnvollste Variante ist. Falls ich wieder Fragen habe werde ich mich wieder melden. Aber auf jeden Fall Dankeschön.