[Projekt] Arduatmo - Ambilight auf Arduino-Basis

  • Hallo TheChief,
    kann es sein das in dem Arduino-Sketch die Reihenfolge in dem struct CRGB vollkommen ignoriert wird?
    Es wird doch direkt der komplette Speicherbereich der über Seriell übertragenen Daten in den Puffer geschrieben welcher dann mit FastSPI_LED2 an die LEDs gesendet wird.
    Eine Neuzuordnung von rgb wird dabei scheinbar nicht vorgenommen. Mich hat gestört das ich im Plugin und im Boblight die Daten in GRB anstatt RGB senden musste (habe beim testen mit boblight-constant es da irgendwie Unsinn macht).
    Darum habe ich das struct CRGB so geändert das eigentlich die Daten als RGB hätten gesendet werden müssen. Seltsamerweise hat es aber nicht geklappt.
    Als Test habe ich dann im SeduAtmo-Plugin den Wert auf RGB geändert und mehrere verschiedene struct-Deklarationen auf dem Arduino probiert (also mal RGB, mal GRB, mal BGR...). Egal in welcher Reihenfolge ich rgb in dem struct angegeben habe, es wurde immer genau das gleiche angezeigt (Rot steuert).


    Tschau, Uwe.

    Gigabyte GA-Z77-D3H; I3-3220; 4GB 1600MHz DDR3; Technotrend S2-4100 + Technotrend Budget + Nova-HD-S2;
    passive geForce GT620 1GB; WD RED 2TB; LG DVD-DL Brenner; Debian Jessie mit VDR 2.2.0 + SoftHDDevice + KODI

  • Hallo Uwe,


    es kann sein, dass im Datenmodus die CRGB-Reihenfolge keine Rolle spielt. Müsste ich allerdings auch nochmal anschauen und testen.


    Das struct Data enthält ja CRGB


    Code
    struct Data
    {
       int pos;
       uint8_t type;
       uint16_t fs;
       uint8_t command;
       struct CRGB rgb[NUM_LEDS];
    } data;


    und wird in evaluateData befüllt:



    Also theretisch sollte die Reihenfolge auch hier angewendet werden. Werds später mal testen.


    Zumindest intern wird die Reihenfolge aber verwendet. So kannst Du ja mal im setup()-Bereich "oneColorAll(255,0,0)" aufrufen und dann die CRGB-Werte ändern. Das führt zumindest bei mir zu unterschiedlichen Ergebnissen.


    Grüsse
    TheChief

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Hallo,
    ja intern wird die Reihenfolge beim Setzen der Farbe mit setLedColor (was ja von OneColorAll genutzt wird) berücksichtigt. Das liegt daran das in der Funktion setLedColor das struct CRGB für den Zugriff auf den Speicherbereich in data verwendet wird.

    Code
    void setLedColor(int led, uint8_t r, uint8_t g, uint8_t b)
    {
       data.rgb[led].r = r; 
       data.rgb[led].g = g; 
       data.rgb[led].b = b; 
    }


    Damit wird dem richtigen Speicherbereich die richtige Farbe zugewiesen.


    In der Funktion evaluateData, wird aber nur der Speicher der empfangen wurde direkt in den data-Speicher kopiert. Dadurch wird die Reihenfolge der Daten im Speicher nicht geändert.
    z.B. PC sendet als RGB 255,0,0, der Controller empfängt das und kopiert das direkt in data.rgb. Darin steht nun auch 255,0,0 (es wird ja nur der komplette Speicherblock kopiert) und das obwohl die Reigenfolge darin eigentlich GRB ist.
    Die Funktion evaluateData, funktioniert also nur wenn auch der PC die Daten in der richtigen Reihenfolge sendet. Schöner wäre es wenn die Daten intern so umgesetzt werden das der PC immer RGB senden könnte.
    Prinzipiell funktioniert das aber auch so wie es jetzt ist. Im SeduAtmo-Plugin ist die Reihenfolge ja einstellbar und auch im boblight kann die Reihenfolge geändert werden. Nur stimmt dann dort die Zuordnung von Gamma und Adjust für die Farben nicht mehr (die Werte von R und G müssen dann vertauscht werden).


    Tschau, Uwe.

    Gigabyte GA-Z77-D3H; I3-3220; 4GB 1600MHz DDR3; Technotrend S2-4100 + Technotrend Budget + Nova-HD-S2;
    passive geForce GT620 1GB; WD RED 2TB; LG DVD-DL Brenner; Debian Jessie mit VDR 2.2.0 + SoftHDDevice + KODI

  • Hallo zusammen,


    gibt es schon Fortschritt zum Sketch über die libusb?

    oldVDR: 1.7.14-2yavdr1 | SkyStar HD2 | AMD XP 1700+ @1100Mhz & 1,1V | Geforce 4MX onboard NVIDIA CS Treiber (jemand Interesse an diesem stromsparenden SD VDR?)
    newVDR: yavdr 0.5a | TBS 6981 | Intel E5300 underclocked | Zotac 9300 | TBS RC + Harmoy 895 | Pearl LCD | 37W bei HD


    Panasonic TX-P50S20E & Onkyo NR-509 & Jamo S606 HCS 3

  • Der Sketch bleibt der gleiche....muss sich nur jemand finden, der das Plugin umschreibt und boblight. Einfacher ist es einen FDTI zu verwenden.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Hallo,
    also bei mir läuft alles sehr zufriedenstellend.


    Beim Wechsel zwischen VDR und XBMC wird in meinem Script zwischen seduatmo (das Plugin vom VDR) und Boblightd (dem deamon welchen vom XBMC-Boblight-Plugin verwendet wird) umgeschalten.
    Im VDR wird bei 3D Sendern und Aufnahmen, welche von einem 3D-Sender stammen, automatisch das OSD auf 3D geschalten (3D Control Plugin) der 3D-Modus vom seduatmo-Plugin aktiviert (damit auch nur die halben Bildinformationen für das berechnen der LED-Farben verwendet werden). Im XBMC wird auch automatisch der 3D-Modus vom Boblight-Plugin (das ist so aber nicht im originalen Plugin enthalten, dafür haben ich einen Patch geschrieben) aktiviert.


    Aus meiner Sicht gibt es zurzeit nichts was noch geändert oder verbessert werden müsste.


    Tschau, Uwe.

    Gigabyte GA-Z77-D3H; I3-3220; 4GB 1600MHz DDR3; Technotrend S2-4100 + Technotrend Budget + Nova-HD-S2;
    passive geForce GT620 1GB; WD RED 2TB; LG DVD-DL Brenner; Debian Jessie mit VDR 2.2.0 + SoftHDDevice + KODI

  • Hallo zusammen,
    kurz zu mir, ich benutze den vdr schon seit ca. 10 Jahren und habe in der Zeit schon viele Distributionen ausprobiert. Seit längerer Zeit benutze ich yavdr 0.5 und bin damit sehr zufrieden. Da alles sehr gut läuft und der WAF auch extrem hoch ist, suche jetzt nach neuen Funktionen. Das Philips Ambilight fand ich schon immer sehr schick, jedoch mag ich das Bild der Philipse (ausser der ganz Teuren) nicht so sehr. In meiner ersten Euphorie habe ich mir schon einen Arduino-Klon, LED-Stripes und ein Netzteil geordert.
    Ich habe jedoch überhaupt keine Ahnung, wie ich das alles mit dem vdr zum Laufen bringen soll.


    Es wäre sehr schön, wenn mir Jemand Tipps geben könnte, wo ich mich einlesen muss, damit ich das irgendwie hinbekomme. Es gibt ja mehrere Ansätze zu "Ambilight" und dieses Projekt scheint ein Spin-Off eines anderen zu sein. Ich hoffe nicht auf ein Howto für DAU's, aber Hinweise auf die richtige Richtung (damit ich mich nicht zusehr verirre) sind herzlich willkommen.


    Vielen Dank,
    RichardH

  • Hallo Richard,


    was willst Du denn genau wissen?


    Wie das ganze aufgebaut wird, siehst Du ja in den ersten Threads.


    Dann eigentlich nur Arduino Firmware aufspielen, das seduatmo-Plugin installieren, fertig. :D


    Grüsse
    TheChief

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Hallo TheChief,


    super, Danke für die schnelle Reaktion. Ich habe zwar beruflich mit IT zu tun, jedoch habe ich noch nie mit "Entwicklungs"-Boards zu tun gehabt.
    Wie man Firmware auf das Board auf spielt, kann ich mir anlesen, bloß wo bekomme ich die her? Die Konfiguration ist dann analog zum Sedu-Board Projekt?


    Schönen Sonntag,
    RichardH

  • Hier findest Du die Firmware:


    https://github.com/TheChief79/tpm2arduino


    Geöffnet und aufgespielt wird diese mit der Arduino Software (tpm2arduino.ino).


    Ggfs. muss Du im Header der Firmware noch ein paar Änderungen an Dein Setup vornehmen. Kommt auf die verwendetetn LEDs an.


    Die eigentliche Konfiguration der LEDs findet dann über das seduatmo-Plugin statt.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB


  • :tup

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Hallo TheChief,


    der Arduino ist heute angekommen und ich habe direkt versucht, die Firmware mit tmp2arduino | Arduino 1.0.5 (unter Windows 7 32-Bit) aufzuspielen. Hat leider nicht geklappt.
    Ich erhalte "Fehler beim Kompilieren":


    C:\Arduino\libraries\pt\example-codelock.c: In function 'clock_time':
    C:\Arduino\libraries\pt\example-codelock.c:401: error: storage size of 'tv' isn't known
    C:\Arduino\libraries\pt\example-codelock.c:402: error: storage size of 'tz' isn't known


    Hilfe wäre sehr erwünscht :(


    Viele Grüße,
    RichardH

  • Lösch mal das example, ich denke, das brauchts nicht


    Ich hab nur die 5 Dateien in dem pt-Verzeichnis:


    Code
    lc-addrlabels.h
    lc-switch.h
    lc.h
    pt-sem.h
    pt.h


    Was hast Du denn für LEDs? Eventuell musst Du da noch im Header der Firmware was ändern.


    Grüsse

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Super, vielen Dank!!!!


    Ist durchgelaufen, das wars. :D


    Habe mir diese hier in entsprechender Menge gekauft: http://www.ebay.de/itm/1m-60-LED-m-WS2812B-5050-RGB-Stripe-schwarz-WS2811-Controller-/271253238886?pt=Bauteile&hash=item3f27f3f466


    Den Header in der Firmware habe ich so geändert:


    #include <pt.h>
    #include "FastSPI_LED2.h"


    /*==============================================================================*/
    /* LED und Arduino Variablen */
    /*==============================================================================*/


    #define NUM_LEDS 85 // Number of LEDs
    #define MAX_ARGS 10 // Max Number of command arguments
    #define BAUDRATE 500000 // Baudrate
    #define SERIAL Serial // Serial port for communication
    #define SERIAL_DEBUG Serial // Serial port for debugging


    /* Use this, if u have WS2811 LEDs or commet it out*/
    #define PIN 3 // PIN where LEDs are connected/Used for TM1809/WS2811 chipsets, because they dont use SPI
    WS2811Controller800Mhz<PIN> LedController; // Controller Type


    /* Use this, if u have WS2801 LEDs or commet it out*/
    // #define DATAPIN 11
    // #define CLOCKPIN 13
    // #define SELECTPIN 10 //10 for WS2801 on Duemilanove/ can be another select pin on your board
    // #define SPISPEED 9 //9 for WS2801 on Duemilanove
    // WS2801Controller<DATAPIN, CLOCKPIN, SELECTPIN, SPISPEED> LedController;


    // struct CRGB { unsigned char b; unsigned char g; unsigned char r; }; //WS2801
    struct CRGB { unsigned char g; unsigned char r; unsigned char b; }; //WS2811
    // Sometimes chipsets wire in a backwards sort of way
    // struct CRGB { unsigned char b; unsigned char r; unsigned char g; };
    // struct CRGB { unsigned char r; unsigned char g; unsigned char b; };


    Wie gesagt, ist durchgelaufen......mal sehen wie es mit dem Projekt weitergeht.


    Also nochmals vieln Dank und viele Grüße,
    RichardH

  • Jop, müsste passen. Sag bescheid, wenn Du angeschlossen hast und irgendwas geht nicht.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Hey hey wie angekündigt hab ich mir auch mal die Hw bestellt.
    Leider hab ich mit Ardunio keinerlei Erfahrung. Das löten etc. müsste ich hinbekommen. Was mir momentan nicht ganz klar ist, wie arbeitet der ardunio mit dem Vdr? Ich flashe deinen Quelltext auf das Ardunio und zum ansteuern kann ich einfach das atmolight plugin dafür verwenden?
    Momentan ist meine Hw, noch nicht angekommen - daher versuch ich mich ein wenig einzulesen damit ich es dann einfacher habe.
    Liebe grüße

    ~~~~~~~~~~~~~~~~~~~~~/\MEIN VDR-Server/\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //*YaVdr05: Asrock b75 Pro3-M/\Intel Celeron g1610/\Geforce GT610/\CINE S2 V6.5|\\
    \\4 GB RAM/\2x 2TB HDD´s/\Medion x10/\PSU: Bequit 300w PurePower/\LianLiPC U6//
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • Nein, Du musst dann das seduatmo-Plugin verwenden. Das findest Du hier: http://projects.vdr-developer.org/projects/plg-seduatmo


    Ansonsten kannst Du noch hier im Forum weitere Informationen dazu finden.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!