LED Cube dunkle LED´s

Hallo Zusammen,

ich bin zwar nicht neu in der Arduino Welt aber ich habe ein Problem mit einem Projekt.
Folgendes ich habe einen LED CUBE (5x5x5), es wird jeweils eine Lage an LED´s zusammen auf GND geschalten, und 25 Säulen werden einzeln über einen I/O geschalten. Genutzt wird ein Arduino Mega.

Wenn ich jetzt z.B. eine einzelne LED quer durch den Würfel lasse ist die erste immer mit voller Helligkeit an und die anderen glimmen dann nur, das ist wenn ich den pinMode in void setup habe. Allerdings wenn ich den pinMode in die void loop setzte leuchten die LED´s alle in richtiger stärker.

Kann mir jemand sagen an was das liegt??

Das ist das Programm, wenn die LED´s mit richtiger stärke leuchten.

int a = 22;
int b = 26;
int c = 42;
int d = 46;
int layer = 47;

void setup() {
}

void loop() {
  pinMode(b, OUTPUT);
  pinMode(a, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(layer, OUTPUT);
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(layer, HIGH);
  delay(1000);
  digitalWrite(layer, LOW);
  digitalWrite(a, LOW);
  digitalWrite(b, LOW);
  digitalWrite(c, LOW);
  digitalWrite(d, LOW);
  layer++;
  a = a + 6;
  b = b + 4;
  c = c - 4;
  d = d - 6;
  if (layer == 52) {
    layer = 47;
    a = 22;
    b = 26;
    c = 42;
    d = 46;
  }
}

Setze Deinen Code bitte direkt ins Forum. Benutze dazu Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter oder gehe in der IDE auf Bearbeiten - Für Forum kopieren und füge es hier ein.
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

Andi23:
Das ist das Programm, wenn die LED´s mit richtiger stärke leuchten.

das kann ja keiner lesen.

Nimm mal die Formatierungen raus.
Im Sketch funktioniert das glücklicherweise nicht.

Und poste bitte ein Schaltbild, damit wir sehen wie du es verdrahtet hast.


Andi23:
Kann mir jemand sagen an was das liegt??

JA!

Andi23:

Hübsch....äh, bitte was soll das ?

Das zweite Bild ist etwas verwirrend stell es dir nur als die LED an dem Transistor vor

Andi23:
Das zweite Bild ist etwas verwirrend stell es dir nur als die LED an dem Transistor vor

Alles gut!
Ich hab schoin verstanden, was Du willst.

Teste mal.
Achtung - komplett ungetestet und nur kompiliert.
Das was Du suchst ist ein wenig anders - aber ich will den Ansatz vorgeben.
[edit] Da war noch ein fehlender Eintrag - ist kommentiert, sorry…[/edit]

byte aPin = 22;
byte bPin = 26;
byte cPin = 42;
byte dPin = 46;
byte layerPin = 47;

void setup() {
  Serial.begin(115200);
  Serial.println(F("Start..."));
  for (int i = 22; i <= 51; i++)
  {
    pinMode(i, OUTPUT);
  }
}

void loop() {
  digitalWrite(aPin, HIGH);
  digitalWrite(bPin, HIGH);
  digitalWrite(cPin, HIGH);
  digitalWrite(dPin, HIGH);
  digitalWrite(layerPin, HIGH);
  delay(1000);
  digitalWrite(layerPin, LOW);
  digitalWrite(aPin, LOW);
  digitalWrite(bPin, LOW);
  digitalWrite(cPin, LOW);
  digitalWrite(dPin, LOW);
  aPin = aPin + 6; // 22 28 34 40
  bPin = bPin + 4; // 26 30 34 38
  cPin = cPin - 4; // 42 38 34 30
  dPin = dPin - 6; // 46 40 34 28
  layerPin++;
  if (layerPin > 51)
  {
    layerPin = 47; // den hatte ich vergessen...
    aPin = 22;
    bPin = 26;
    cPin = 42;
    dPin = 46;
  }
}

Vielen dank dir. Funktioniert einwandfrei

Andi23:
Funktioniert einwandfrei

NEIN!

Es tut nur so, was Du Dir vorstellst.
Hast Du verstanden, was ich Dir da an Code angeboten habe?

Ja ich hab verstanden was mir angeboten hast.

Andi23:
Ja ich hab verstanden was mir angeboten hast.

Glaub ich nicht.
Nu Du.

pinMode() definiert ein Pin als Eingang oder Ausgang.

digitalWrite(pin , HIGH/LOW)

  • setzt einen Ausgang HIGH oder LOW
  • aktiviert oder deaktiviert den internen Pullupwiderstand eines Eingangs.
pinMode(b, OUTPUT);
  pinMode(a, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(layer, OUTPUT);

Aktiviert als Ausgänge nur 5 Pins nicht die 25+5 die Du brauchst.
Die nicht als Ausgänge definierte Pins sind Eingänge und Du aktivierst dann nur den Pullupwiderstand Dadurch fließt ein sehr kleiner Strom wodurch die LED glimmt.

Grüße Uwe