LED Matrix Led Nr. in XY-Koordinate umrechnen

Hallo,

ich stehe grade vor einem kleinen Problem:

Ich habe eine Matrix aus 14x20 Ws2812 Leds, die Schlangenlinienförmig miteinander verbunden sind.
Nun möchte ich um z.B. die 3. Led anzusteuern nicht sagen müssen LED Nr. 3 sondern x=1, y=3 usw..

Kann mir jemand verraten wie ich dies umrechnen kann?

Danke im Vorraus!

1 Like

Mach ein zwei dimensionales Array, wo du deine LED Nummer ablegst. Dann ist auch egal, wie sie verdrahtet sind
Beachte aber, dass du 0 nicht als x bzw. y Wert benutzt.

Hallo jonah,

Versuch es mal mit den Bibliotheken NeoPixel, NeoMatrix und GFX von Adafruit. Diese habe ich bei meinem Projekt Tetris auf dem Arduino gearde auch verwendet.

Diese sind relativ einfach anzusteuern.

So definiert man eine Matrix vor dem Setup.

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(Y, X, PIN,
                            NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
                            NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE,
                            NEO_GRB            + NEO_KHZ800);

So dann im Setup

matrix.begin();
  matrix.setTextWrap(false);
  matrix.show();

Und dann kannst du einfach die Koordinaten angeben und die Farbe

matrix.drawPixel(Y, X, matrix.Color(0, 0, 0));

Wichtig hierbei ist das du danach den Befehl

matrix.show();

nicht vergisst, sonst zeigt es dir nähmlich gar nix an.

Was außerdem noch relativ wichtig ist das du ein ordendliches Netzteil hast weil:

Du hast eine 14x20 Matrix, das sind 280 LEDs. Wenn du im Extremfall alle LEDs mit voller Power also das hellste Weis ansteuerst hast du pro LED einen Strom von 60mA + ca. 1mA Steuerstrom

Das heißt im Extremfall kannst du bis zu 17,08A benötigen.

Was auch noch sehr hilfreich an diesen Bibliotheken ist sind die der GFX Bibliotheke.
Mit der kannst du Texte und Formen darstellen die Automatisch berechnet und durchgeschoben werden.

Hier ein Beispiel von mir:

void Text()
{
  matrix.setRotation(2);
  matrix.fillScreen(0);
  matrix.setCursor(x, 1);
  matrix.print("Tetris");
  matrix.setTextColor(matrix.Color(55, 255, 150));
  if (--x < -42)
  {
    x = matrix.width();

    if (++pass >= 10) pass = 1;
  }
  matrix.show();
  //Serial.println("Text wurde angezeigt");
  delay(200);
}

Hier wird jetzt der Text Tetris über die Matrix hinweg geschoben.

Viel Spaß und ich hoffe ich habe dir geholfen

bdorer

Falls du noch weitere Fragen hast oder mal ein Beispielprogramm willst kannst du mir gerne eine PN schicken.

über ein Beispielprogramm per PN freut sich jeder Forennutzer, der irgendwann mal über den Thread stolpert und ihn interessant findet :frowning:
Hoffentlich bist du dann noch hier und beantwortest PNs