LED-Matrix (15x12) Probleme mit der Kommunikation zwischen Arduino und Jinx / Glediator

  • Morgen zusammen,
    da ich noch anfänger mit Arduino und der Programmierung bin, hab ich natürlich gleich mal ein paar probleme.


    Kurz vorweg, Ich nutze einen Arduino Mega 2560 (china Clone) 3m ws2812b /60LED/m led stripe die ich über eine Software wie Jinx oder Glediator ansteuern möchte. Dazu benutze ich die ino von Glediator


    Jinx so wie Glediator Senden daten im Glediator Protokoll. Ja sie senden Daten (TX led Flackert und Blinkt wie irre 8| ) aber das ist die einzige LED die Flackert, die Stripes bleiben Dunkel. Strom und alles ist an und Versorgt die led mit ausreichend Spannung, (Getestet über FastLED Beispiel) mit dem Beispielen von FastLED funktioniert auch alles nur leider nicht mit der Glediator firmware.


    Jetzt die Frage, woran kann das liegen? An der Hardware eher nicht die Funktioiert, meine vermutung an der Firmware die die signale die sie empfängt nicht an die led Weitergibt.


    BITTE bitte ich könnte da echt etwas hilfe gebrauchen^^

  • Ist F_CPU auch per Fuses richtig eingestellt? Die Vermutung bei so etwas liegt Nahe, dass das Timing nicht stimmt. Weiterhin einfach mal den USB-Empfang raus nehmen und nur ein paar Dummy-Daten in den Puffer schreiben und ausgeben. Wenn das funktioniert, dauert der Datenempfang zu lange.


    Aber eigentlich sehe ich da gar keine so richtige Protkoll-Routine. Ist denn das Glediator-Protokoll so einfach, dass er nur permanent Datenbytes sendet?

  • nun ich muss zugeben das ich mich bei dem thema arduin und so noch so gut wie garnicht auskenne, ich weis das ich die leds damit ansteuern kann und auch bereits habe über die FastLed geschichte, aber bis jetzt hab ich noch keine ahnung wie ich was mit dem ding machen soll oder kann.


    ich weis nur das er irgendwelche daten empfängt, (blinkende TX led) aber die daten nicht an die led´s weiter gibt. zwecks der pinbelegung, bin ich alle PWM und Digitale pins durchgegangen (0- 53) aber ohne erfolg. bei 0 werden ein paar leds grün und eine weis wenn ich über glediator arbeite. aber das wars dann auch schon.


    wenn ich jetzt wüsste wie das datenpacket von glediator oder Jinx aussieht und wie es empfangen wird, könnte man eine einfache rgb steuerung damit realisieren.


    also z.b. den datenstrom Via Variable empfangen und in einer solchen codezeile einfügen.


    dann zum beispiel an die stelle
    strip.setPixelColor dann einen datenwert einfügen. beispielsweise wenn aus der software dann z.b. ein rgb wert kommt mit |Led_num|R|G|B| und die daten dann in die zeile einfügt. doch ich hab keine ahnung in welchem format das glediator protokoll arbeitet.


    Denn so wie im oberen codebeispiel leuchten alle led´s


    Alternativ könnte man ja das tpm2 Protokoll benutzen, evtl gibt es da mehr erfolg.

  • Nunja, einfach mal ein Stück Quellcode kopieren und hoffen, dass etwas funktioniert, ist schwierig, wenn es nicht der komplette Code für eine Zweck ist. Schau mal in den Glediator-Thread, ich denke, da war auch was zum Arduino-Code geschrieben. Weiß aber nicht genau, ob es den gibt oder was der macht. Ansonsten nimm ein fertiges SEDUv3 o.ä. Board. Damit kannst Du direkt loslegen.

  • also von den sedu boards halte ich momentan nicht all zu viel da diese auf 256 led begrenzt sind, so wie ich das bei einem gelesen habe.


    Alternativ ginge natürlich auch das TPM2 Protokoll, bei diesem hab ich zumindest mir dem Testcode den ich im Netz gefunden habe schon einen Blinker nachdem die Serial Verbíndung aufgebaut wurde.


    nur hab ich damit leider Auch noch keinen rechten erfolg verbuchen können. liegt evtl daran das ich warscheinlich noch ein paar parameter falsch habe.


    Im debug modus konnte ich zumindest mal einen befehl hin und her senden so das ich antwort vom arduino erhalte. doch die programme davon hab ich nicht zum laufen gebracht.


  • Das Glediator-Protokoll ist eigentlich ganz einfach: eine "1" kennzeichnet den Start des Datenblocks, danach kommen die RGB-Werte. In diesen darf dann der Wert 1 natürlich nicht enthalten sein, den entfernt die Senderoutine (k.A., ob sie dann 2 oder 0 draus macht).


    Du musst so viele Bytes senden, wie die Empfangsroutine erwartet. Sonst tritt der Fall if (pos == ((NUMBER_OF_PIXELS*3)-1)) {go=1;} nie ein, es werden also nie Daten ausgegeben. Sollte aber bei Dir passen, Du hast ja 180 Pixel eingetragen und auch 180 in Glediator gepatcht.


    Du kannst ja mal in der Main Loop das if (go==1) raus machen, dann sollte er den Puffer immer ausgeben, egal ob nun was rein gekommen ist oder nicht. Da im RAM nach dem Reset zufällige Werte stehen, sollten die LEDs dann also irgendwie bunt leuchten. Bleiben sie aus, dann stimmt was an der Ausgaberoutine nicht.


    Leuchten Sie bunt, dann stimmt was an der Empfangsroutine oder Ausgabe am PC nicht.


    P.S.: wer behauptet, dass das SEDU-Board nur 256 Pixel kann.?!? - sogar das alte kann schon 1.024...

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!