Probleme mit ws2812 Flexmatrix von Longruner, benötige Hilfe!!!

Hallo liebe Gemeinde,

ich bekomme schon graue Haare, ich versuche schon seit geraumer Zeit aus mehreren Matrix-Panelen (8x32 Px) eine grosse Matrix zu erstellen von 16x64 Px. wenn ich zwei matritzen untereinander lege also eine auflösung von 16x32 Px alles kein problem aber sobald ich sie rechts neneinander lege bekomme ich das nicht hin das er es auch erweitert und nicht als zweite matrix erkennt.

kann mir jemand von Euch helfen oder einen Denkanstoß geben wie ich das Problem löse?

ich bedanke mich schon einmal im vorraus.

Wie wäre es denn, wenn Du uns einen Link zu Deinen Matritzen gibst und genauer beschreibst, was geht und was nicht.
Dein Sketch (in Codetags) wäre auch sinnvoll.

Gruß Tommy

also die led matrix ist folgende:

und als scetch habe ich das probiert mit neomatrix von adafruit, aber ich komme damit nicht sehr viel weiter.

also um das problem zu beschreiben:

ich setze eine flexmatrix untern dran, das ist kein problem wenn ich dies so erweitere da die matrix wie folgt angeordnet ist.

1111111111111111111111111111
1
1
1111111111111111111111111111
1
1
1111111111111111111111111111
1
1
1111111111111111111111111111

hier eins unten drunter gesetzt ist kein problem

1111111111111111111111111111 1111111111111111111111111111
1 1
1 1
1111111111111111111111111111 1111111111111111111111111111
1 1
1 1
1111111111111111111111111111 1111111111111111111111111111
1 1
1 1
1111111111111111111111111111 1111111111111111111111111111

dies ist mein problem wenn wenn ich die matrix nach rechts
erweitern möchte, da ist halt meine frage wie ich die matrix
programmiere oder den scetch schreibe um dies zu realisieren.

Welchen Controller und welches Netzteil verwendest Du?
16x64 Px. brauchen 3072 Byte RAM und max 61,5A bei 5V.

Jetzt weiß ich nicht wie die LED organisiert sind.
Ich nehme mal an daß die Daten in die erste Ws2812 links oben eingespeist werden und dann die obere Reihe nach rechts laufen und dann links in der 2. Reihe weiterlaufen. Verieinfacht mit einer 3x2 Matrix:
01 02 03
04 05 06

Wenn Du 2 übereinander anordnest dann kommt nach 9 die 10
01 02 03
04 05 06
07 08 09
10 11 12

Wenn Du 2 Nebeneinander anordnest dann:
01 02 03 07 06 09
03 04 05 10 11 12

Also mußt Du die Daten für die 4 Position in der ersten Reihe in das LED 7 schreiben.

Annahme Du numerierst die Positionen (PosPX)
01 02 03 04 05 06
07 08 ecc
Dann entspricht 04-07, 05-08, 06-09 , 07-03, 08-04 ecc
01 02 03 07 08 09
04 05 06 10 11 12

bei 2x2 Modulen gilt:
Pixelposition:
01 02 03 04 05 06
07 08 09 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
wird wenn Du zuerst die beiden linken Module zusammenscshaltest und dann die mit den rechten weitermachst
01 02 03 13 14 15
04 05 06 16 17 16
07 08 09 19 20 21
10 11 12 22 23 24
Also Modul Ansteuerung:
1 3
2 4

PosLED ist die Position der LED in der Matrix für die Pixelposition.
LMod = 32 Länge eines Moduls 3
LDisp = 64 Länge des Zusammengestellten Displays6
HMod = 8 Höhe des Moduls 2
HDisp = 16 Höhe des Moduls 4

.....

Hab im Moment nicht das Hirn um hier eine Rechenformel zu erstellen.

Grüße Uwe

Der TO scheint mit den Antworten nicht zufrieden zu sein. Er versucht es mit Crossposting.

Gruß Tommy

Doch alles gut, natürlich bin ich mit den antworten zu frieden, alles kein thema, Ich freu mich über jede Hilfe die ich bekomme.
Ich habe einen Arduino MEGA in Gebrauch und arbeite mit 2 mal 40A 5V Netzteilen.

meine LED-Matrix ist wie folgt organisiert: ich gehe von 4x4 px aus

01 02 03 04
08 07 06 05
09 10 11 12
16 15 14 13

aber ich bedanke mich erstmal sehr für Deine Antwort, hilft natürlich auch sehr weiter, vieleicht kannst du mir wie du auch immer Zeit hast, so richtig weiterhelfen, da ich in die Pixelgeschichte blutiger Anfänger bin was Arduino betrifft.

Gruß Marco :slight_smile:

niemand da, der mir helfen kann? :frowning:

Hi

Nunja - Es ist immerhin Dein Problem - was hattest Du in den letzten drei Wochen denn so versucht, was ist dabei heraus gekommen, wo hat's geklemmt?

Wenn jetzt 'Nichts' kommt - egal zu welcher der drei Teilfragen - soltlest Du vll. in drei Wochen noch Mal mit besseren Antworten vorbei kommen.

MfG

hi

ich habe versucht mir irgend wie Hilfe zu organisieren, und mir die FastLed.h einmal zur Brust genommen. dort hatte ich gesucht wo die Matrix organisiert wird um das alles zum laufen zu bekommen.
Und das es mein Problem ist ist mir bewust, sonst würde ich auch nicht nach hilfe fragen, zumal ich geschrieben habe das ich blutiger Anfänger bin was matrix und arduino betrifft.

gruß

Die FastLED-Doku hat eine Suchfunktion und gleich der 1. Treffer zeigt, wie man die Matrix organisiert.
So was aber auch.

const bool    kMatrixSerpentineLayout = true;

Gruß Tommy

Hi..

ich glaube wir haben aneinander vorbei geredet, wie das mit den serpentinen funktioniert weiß ich, das läuft ja auch bei mir alles, aber ich habe es nochml auf einem bild dargestellt was ich meine, und zwar die sepentinen neben der matrix sodaß er aus dem ganzen eine Matrix macht bzw erkennt.

und nochmal ich habe einen arduino mega und keinen teensy, da läuft das programm smartmatrix nicht.

MfG Marco

PS.: ambei ein Bild der organisation mein LED

Von Deinem Laufwerk D werden wir wohl keine Bilder sehen.
Wie Du Bilder anhängst, steht hier.

Gruß Tommy

marcobiblis:
...
(img)http://D:\Bilder\Matrix(/img)

Das sollte aber schon in der Vorschau nicht sonderlich gut funktioniert haben.

so aber jetzt ist es gut,

Nö, ist es nicht.
Was nutzt ein Bild auf irgendeinem Server, wo es beliebig wieder gelöscht wird und wo man sich einloggen muss.
Du hattes Doch einen Link bekommen, wie man Bilder hier im Forum anhängt.
Warum ignorierst Du unsere Antworten?

Gruß Tommy

... fast ...

Nun müsste ich mich nur noch mit 'meinem' MS-Account anmelden, damit ich 'mein' Blid sehen kann.
Ich denke, Du bist zufällig angemeldet, da Dir Dein Bild auch angezeigt wird?

Vll. ist's doch keine so schlechte Idee, das Bild in forentauglicher Größe ins Forum zu packen?

MfG

PS: Das Helfersyndrom konnte mit Deiner Hilfe gründlich reduziert werden - danke dafür!

so ich hoffe es hat geklappt jetzt

So wäre es besser gewesen.

Gruß Tommy

Edit: Ok, jetzt sehe ich Dein Problem. Da wirst Du wohl umverdrahten müssen oder Dir selbst die Lösung schreiben müssen. Ich glaube nicht, dass das bisher jemand gebaut hat.

Letztendlich läuft es ja darauf hinaus, aus x und y des Pixels den Index innerhalb des Arrays zu bestimmen. In dem von mir verlinkten Beispiel ist diese Funktion drin. Diese müsstest Du auf Deine Geometrie umschreiben, also den rechten Teil gesondert behandeln (linke Matrix+Berechnung).

uint16_t XY( uint8_t x, uint8_t y)
{
  uint16_t i;

  if( kMatrixSerpentineLayout == false) {
    i = (y * kMatrixWidth) + x;
  }

  if( kMatrixSerpentineLayout == true) {
    if( y & 0x01) {
      // Odd rows run backwards
      uint8_t reverseX = (kMatrixWidth - 1) - x;
      i = (y * kMatrixWidth) + reverseX;
    } else {
      // Even rows run forwards
      i = (y * kMatrixWidth) + x;
    }
  }

  return i;
}

Gruß Tommy

Okay, ich danke Dir ersteinmal vielmals, was auch mein Gedanke war, ist, die rechte Matrix an einen anderen pin aber ich denke das kommt dann auf das gleiche raus.

grüsse Marco

Die Funktion müsste so aussehen (ungetestet):

const uint8_t kMatrixWidth = 64;
const uint8_t kMatrixHight = 16;
const uint16_t right0 = kMatrixWidth / 2 * kMatrixHight; // Index 0 der rechten Matrix

uint16_t XY1( uint8_t x, uint8_t y) {  // die vorhandene Funktion
  uint16_t i;

  if( y & 0x01) {
    // Odd rows run backwards
    uint8_t reverseX = (kMatrixWidth - 1) - x;
    i = (y * kMatrixWidth) + reverseX;
  } else {
    // Even rows run forwards
    i = (y * kMatrixWidth) + x;
  }
}

uint16_t XY( uint8_t x, uint8_t y) {
  if (x < kMatrixWidth/2) { // linke Seite
    return XY1(x, y);
  }
  return right0 + XY1(x, y);
}

Gruß Tommy