Brauche Hilfe mit LEDText (FastLED->LEDMatrix->LEDText)

Ich schon wieder ::slight_smile: ...

Ich möchte/soll/muss einen Lauftext mit FastLED->LEDMatrix->LEDText Über 4 Matrizen Laufen lassen das Problem dabei ist das jede Matrix einen eigenen Pin Hat das ganze läuft mit auf einem Tennsy3.2 der steckt auf einem Teensy 3.2 OctoWS2811 Adaptor an diesem sind über die RJ-45 Buchsen 5 Adafruit NeoPixel NeoMatrix 8x8 - 64 RGB LED Pixel Matrix Angeschlossen, die Matrizen sind zu einem Würfel (unten Offen, steht da auf einem Gehäuse) angeordnet über die 4 Seitlichen soll der Text laufen.

Ich habe mit LEDMatrix schon ein paar Sketches für diesen Aufbau geschrieben da konnte ich die Einzelnen Matrizen auch problemlos einzeln ansprechen aber mit LEDText geht das scheinbar nicht so einfach.
Bis morgen sollte das mit dem Lauftext funktionieren stehe daher etwas unter Zeitdruck und bin echt Ratlos..

Hier mal ein Paar Code Fetzen:

#define MATRIX_OBEN           20
#define MATRIX_VORNE          8
#define MATRIX_RECHTS         7
#define MATRIX_HINTEN         21
#define MATRIX_LINKS          6

Der text soll Vorne starten und nach Links laufen einmal rum sodass er rechts endet.

#include <FastLED.h>

#include <LEDMatrix.h>
#include <LEDText.h>
#include <FontMatrise.h>

#define MATRIX_VORNE          8
#define FARB_REIHENFOLGE    GRB
#define LEDTYP              WS2812

#define MATRIX_WIDTH        8
#define MATRIX_HEIGHT       8
#define MATRIX_TYPE         VERTICAL_MATRIX

#define ANZAHL_LEDS         320

cLEDMatrix<MATRIX_WIDTH, MATRIX_HEIGHT, MATRIX_TYPE> leds;

cLEDText ScrollingMsg;

const unsigned char TxtDemo[] = { EFFECT_CHAR_LEFT EFFECT_SCROLL_DOWN " EXAmpl"};

void setup()
{
  FastLED.addLeds<LEDTYP, MATRIX_VORNE, FARB_REIHENFOLGE>(leds[0], leds.Size());
  FastLED.setBrightness(30);
  ScrollingMsg.SetFont(MatriseFontData);
  ScrollingMsg.Init(&leds, leds.Width(), ScrollingMsg.FontHeight() + 1, 0, 0);
  ScrollingMsg.SetText((unsigned char *)TxtDemo, sizeof(TxtDemo) - 1);
  ScrollingMsg.SetTextColrOptions(COLR_RGB | COLR_SINGLE, 0x00, 0x00, 0xff);
  FastLED.clear(true);
}


void loop()
{
  if (ScrollingMsg.UpdateText() == -1)
    ScrollingMsg.SetText((unsigned char *)TxtDemo, sizeof(TxtDemo) - 1);
  else
    FastLED.show();
  delay(80);
}

Das ist mein Code bis jetzt das Funktioniert auch der Text läuft von rechts nach links über die vordere Matrix sobald ich aber versuche noch weitere Matrizen einzubinden funktioniert nichts mehr.

#include <FastLED.h>

#include <LEDMatrix.h>
#include <LEDText.h>

#define MATRIX_OBEN           20
#define MATRIX_VORNE          8
#define MATRIX_RECHTS         7
#define MATRIX_HINTEN         21
#define MATRIX_LINKS          6

#define FARB_REIHENFOLGE      GRB
#define LEDTYP                WS2812

#define MATRIX_WIDTH          8
#define MATRIX_HEIGHT         8
#define MATRIX_TYPE           VERTICAL_MATRIX
#define ANZAHL_LEDS           320

#define t                     50
#define t2                    80
#define t3                    100
#define t4                    80
#define t5                    100
#define t6                    5
#define t7                    500

cLEDMatrix<MATRIX_WIDTH, MATRIX_HEIGHT, MATRIX_TYPE> leds;

CRGB ledso[ANZAHL_LEDS/5];
CRGB ledsv[ANZAHL_LEDS/5];
CRGB ledsr[ANZAHL_LEDS/5];
CRGB ledsh[ANZAHL_LEDS/5];
CRGB ledsl[ANZAHL_LEDS/5];

void setup() {
  FastLED.addLeds<LEDTYP, MATRIX_OBEN, FARB_REIHENFOLGE>(ledso, ANZAHL_LEDS/5);
  FastLED.addLeds<LEDTYP, MATRIX_VORNE, FARB_REIHENFOLGE>(ledsv, ANZAHL_LEDS/5);
  FastLED.addLeds<LEDTYP, MATRIX_RECHTS, FARB_REIHENFOLGE>(ledsr, ANZAHL_LEDS/5);
  FastLED.addLeds<LEDTYP, MATRIX_HINTEN, FARB_REIHENFOLGE>(ledsh, ANZAHL_LEDS/5);
  FastLED.addLeds<LEDTYP, MATRIX_LINKS, FARB_REIHENFOLGE>(ledsl, ANZAHL_LEDS/5);
  FastLED.setBrightness(15);
  FastLED.clear(true);
  delay(500);
  FastLED.showColor(CRGB::Red);
  delay(1000);
  FastLED.showColor(CRGB::Green);
  delay(1000);
  FastLED.showColor(CRGB::Blue);
  delay(1000);
  FastLED.showColor(CRGB::White);
  delay(1000);
  FastLED.clear(true);
}

void loop(){
ledso[56] = CRGB::Red;
ledsv[57] = CRGB::Blue;
ledsr[48] = CRGB::White;
ledsh[58] = CRGB::Yellow;
ledsl[49] = CRGB::Green;
FastLED.show();
(...)
}

so konnte ich bis her immer alle einzeln ansteuern das hat immer gut funktioniert

ScrollingMsg.Init(&leds, leds.Width(), ScrollingMsg.FontHeight() + 1, 0, 0);

in der Zeile müsste ich mich doch eigentlich auf eine andere Matrix beziehen können ?! wenn ich hier aber etwas ändere also wie oben

#include <FastLED.h>

#include <LEDMatrix.h>
#include <LEDText.h>

#define MATRIX_OBEN           20
#define MATRIX_VORNE          8
#define MATRIX_RECHTS         7
#define MATRIX_HINTEN         21
#define MATRIX_LINKS          6

#define FARB_REIHENFOLGE      GRB
#define LEDTYP                WS2812

#define MATRIX_WIDTH          8
#define MATRIX_HEIGHT         8
#define MATRIX_TYPE           VERTICAL_MATRIX
#define ANZAHL_LEDS           320

#define t                     50
#define t2                    80
#define t3                    100
#define t4                    80
#define t5                    100
#define t6                    5
#define t7                    500

cLEDMatrix<MATRIX_WIDTH, MATRIX_HEIGHT, MATRIX_TYPE> leds;

CRGB ledso[ANZAHL_LEDS/5];
CRGB ledsv[ANZAHL_LEDS/5];
CRGB ledsr[ANZAHL_LEDS/5];
CRGB ledsh[ANZAHL_LEDS/5];
CRGB ledsl[ANZAHL_LEDS/5];

void setup() {
  FastLED.addLeds<LEDTYP, MATRIX_OBEN, FARB_REIHENFOLGE>(ledso, ANZAHL_LEDS/5);
  FastLED.addLeds<LEDTYP, MATRIX_VORNE, FARB_REIHENFOLGE>(ledsv, ANZAHL_LEDS/5);
  FastLED.addLeds<LEDTYP, MATRIX_RECHTS, FARB_REIHENFOLGE>(ledsr, ANZAHL_LEDS/5);
  FastLED.addLeds<LEDTYP, MATRIX_HINTEN, FARB_REIHENFOLGE>(ledsh, ANZAHL_LEDS/5);
  FastLED.addLeds<LEDTYP, MATRIX_LINKS, FARB_REIHENFOLGE>(ledsl, ANZAHL_LEDS/5);
  FastLED.setBrightness(15);
  FastLED.clear(true);

so meine Matrizen alle einzeln definiere und dann in der Zeile

ScrollingMsg.Init(&ledsv, leds.Width(), ScrollingMsg.FontHeight() + 1, 0, 0);
//Oder
ScrollingMsg.Init(&leds, ledsv.Width(), ScrollingMsg.FontHeight() + 1, 0, 0);

schreibe kommt beim oberen : "exit status 1
no matching function for call to 'cLEDText::Init(CRGB (*)[64], int, int, int, int)'"

und beim unteren : "exit status 1
request for member 'Width' in 'ledsv', which is of non-class type 'CRGB [64]'"

Bräuchte echt Hilfe ....

Falls sich jemand wundert der den Beitrag schon gelesen hatte ja, ich hab alles nochmal neu geschrieben.

Gruß Flo

So hab alles nochmal neu geschrieben war teilweise vielleicht etwas unverständlich hoffe ist jetzt besser wenn nicht einfach Fragen.

Ich bin grade nebenbei am Rumspielen mit der Hintergrund Farbe ich hab in der LEDText.h das hier gefunden :

void SetBackgroundMode(uint16_t Options, uint8_t Dimming = 0x00);

ich geh mal davon aus das die Funktion ist um die Hintergrundfarbe zu bestimmen aber ich hab keine Ahnung wie bzw was ich da rein schreiben muss .. würde den Hintergund gerne weiß machen.

Außerdem im Wiki dazu folgendes : void SetBackgroundMode(uint16_t Options, uint8_t Dimming = 0x00);

This function allows you to set the background mode and optionally if the mode is
BACKGND_DIMMING, the dimming percentage ( BACKGND_ERASE ,
BACKGND_LEAVE , BACKGND_DIMMING ).

wenn ich das richtig verstehe lässt sich damit auch der Hintergrund dimmen das sollte bei mir auch so sein also der Hintergrund dunkler als die Schrift.

Hier mal der Link zur >>LEDText.h<<

Wäre schön wenn mir das ach jemand erklären könnte wie man sieht oder woher man weiß was da rein muss und so ..

Gruß Flo

Hallo,
könnte helfen
spiele mal mit den Beispielen der FastLED
Gruß und Spaß
Andreas

Mit den Beispielen Spiel ich ja schon die ganze zeit so bin ja zu dem was ich jetzt habe gekommen nur in keinem Beispiel wird eine Hintergrundfarbe Benutzt und nirgends werden mehrere Matrizen über mehrere Pins benutzt genau deshalb Frag ich ja hier ..

und zum 1. Link.. LEDText ist ja quasi eine Erweiterung zu FastLED eine einfache Dimm Funktion funktioniert schon alleine deshalb nicht weil der Text alles alle 80ms überschreibt wenn ich die Matrix eine Farbe anzeigen lasse dann flackert sie wenn ich den Text laufen lasse.

Trotzdem danke

Edit in der Wiki hätte ich vielleicht nur etwas weiter lesen sollen da steht dann :
void SetTextColrOptions(uint16_t Options, uint8_t ColA1 = 0xff, uint8_t ColA2 = 0xff, uint8_t ColA3 = 0xff, uint8_t ColB1 = 0xff, uint8_t ColB2 = 0xff, uint8_t ColB3 = 0xff);

This allows you to set the text mode and colour. You can use a combination of the defines for flexible colour control ( COLR_RGB , COLR_HSV , COLR_GRAD_CV , COLR_GRAD_AV , COLR_GRAD_CH , COLR_GRAD_AH ). If you are just setting a single colour mode, you only need to provide the first three uint8_t's. There are two other colour modes ( COLR_EMPTY & COLR_DIMMING ). The EMPTY one will leave any '1' bits in the font data untouched allowing the background to show through and the DIMMING one will dim those '1' bits to ColA1 percent and as such is the only uint8_t that needs to be supplied when specifying the DIMMING option.

d.h. ich muss ScrollingMsg.SetTextColrOptions(COLR_RGB | COLR_SINGLE, 0x00, 0x00, 0xff);ändern und statt COLR_SINGLE COLR_EMPTY nutzen ?! aber ich verstehe trotzdem nicht was ich dann eingeben muss kann mir das mal jemand grundsetztlich erklären ?

Ich habe mich mit diesen Font- u. Sprite Libs nur mal kurz beschäftigt und das, was ich machen wollte, habe ich mit Hilfe der Doku schnell hinbekommen.

Ich kann Dir bei Deinen Detailfragen nicht weiterhelfen, aber frage doch einfach den Autor Aaron Liddiment. Er ist wirklich sehr nett. Kontakt hier oder hier.

Und wenn Du ihn über das FastLED Forum fragst, haben alle etwas von der Antwort, und es ist ihm sicher eine Freude, Unklarheiten auszuräumen.

Grüße,

Helmuth