Einfarbiges Ambilight

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo zusammen,

    ich habe in meinem TV Zimmer eine selbstgebaute LED-Leiste mit Superflux RGB LEDs. Bei dieser kann ich jeden der 3 Farbkanäle einzeln ansteuern. Die komplette Leiste ist dabei in der selben Farbe.
    Da die Leiste auch nicht hinter dem TV angebracht ist, möchte ich aus dem kompletten Bild 1 Farbe generieren und die Leiste in dieser Farbe leuchten lassen. Im Prinzip also ein normales Ambilight nur mit einer Farbe für das komplette Bild anstatt den einzelnen Kanten / Abschnitten.
    Ist dies möglich? Falls ja, wie gehe ich dabei vor?

    Viele Grüße

    EDIT: Da ich die Farbkanäle der Leiste einzeln über RGB ansteuer, brauche ich auch die passende Pin-Belegung. Gibt es zu den gängigen RPi-Ambilight Programmen eine Doku?

    Einmal editiert, zuletzt von pckhib (8. Februar 2015 um 16:10)

  • Also, ich könnte mich da täuschen, aber vom Prinzip her brauchst du da alles, was man auch bräuchte, wenn man ein "normales" Ambilight nachbaut und davon gibt es hier ja dutzende Anleitungen und Threads.

    Wenn du das ganze dann hast, kannst du die einzelnen LEDs in der Config-Datei so einstellen, dass sie als eine große fungieren und über Horizontal und Vertical Depth so einstellen, dass sie sich über das ganze Bild überschneiden und dann müsstest du eine Farbe haben.

    Einmal editiert, zuletzt von Livecam (8. Februar 2015 um 16:20)

  • Ok, werde das soweit mal einrichten. Der Unterschied ist bei mir aber noch, dass ich einfache RGB-LEDs habe. Die in den Tutorials verwendeten LED-Stripes haben so viel ich weiß einen integrierten Controller, der es steuert oder irre ich mich da?
    Ich habe wie gesagt "nur" einfache RGB-LEDs, die in Reihe hintereinander geschaltet sind. Hier ist ein Bild der LED-Pins: http://www.ledstyles.de/index.php/Atta…3Fthumbnail%3D1

    Somit müsste ich ja auch eine andere Belegung der GPIO-Pins am RPi haben.

    Einmal editiert, zuletzt von pckhib (8. Februar 2015 um 16:27)

  • Joa, deine LEDs wirst du über PWM steuern müssen.

    Im Endeffekt wirst du ja aus deinem Hyperion/ambitv eine Farbe (bestehend aus R, G und B, je ein Byte in HEX) bekommen.
    Diese HEX Werte musst du dann lediglich normieren und damit dein PWM Signal (->z.B. über piblaster) füttern. Frequenz kann ich dir natürlich nicht sagen, da kein Datenblatt vorhanden ist, solltest du aber rankommen können.

  • Vielen Dank schonmal.
    Inzwischen habe ich folgendes:
    TV-Bild kommt an
    ambi-tv installiert
    RGB-Steuerung über pi-blaster funktioniert

    Wie konfiguriere ich nun ambi-tv am Besten (leds-top, bottom, left, right)? Und wie komme ich an die Farbe, welche ambi-tv letztendlich ausgibt?

    Theoretisch muss ich mir dann ein Script schreiben, welche alle x Millisekunden den Farbwert errechnet und dementsprechend meine Farbkanäle aktiviert oder?

    EDIT: Ich sehe gerade, dass ambi-tv einen Durchschnitts-Farb-Effekt hat, der im Prinzip genau das macht, was ich möchte. Kann ich auf diesen direkt zugreifen?

    Einmal editiert, zuletzt von pckhib (8. Februar 2015 um 20:01)


  • Vielen Dank schonmal.
    Inzwischen habe ich folgendes:
    TV-Bild kommt an
    ambi-tv installiert
    RGB-Steuerung über pi-blaster funktioniert

    Wie konfiguriere ich nun ambi-tv am Besten (leds-top, bottom, left, right)? Und wie komme ich an die Farbe, welche ambi-tv letztendlich ausgibt?

    Theoretisch muss ich mir dann ein Script schreiben, welche alle x Millisekunden den Farbwert errechnet und dementsprechend meine Farbkanäle aktiviert oder?

    EDIT: Ich sehe gerade, dass ambi-tv einen Durchschnitts-Farb-Effekt hat, der im Prinzip genau das macht, was ich möchte. Kann ich auf diesen direkt zugreifen?

    Freut mich, dass der Ansatz mit piblaster soweit läuft ;)

    Bin kein spezi für ambitv, aber du kannst an GPIO3 (glaube ich?) n Taster anschliessen und damit die Modi durchschalten


  • Bin kein spezi für ambitv, aber du kannst an GPIO3 (glaube ich?) n Taster anschliessen und damit die Modi durchschalten

    Ja, das hab ich mittlerweile auch rausgefunden. Geht auch mit Leertaste während das Programm läuft. Das Hauptproblem ist jetzt momentan, wie ich die Farbwerte von ambi-tv auslese.


  • Ich würde dir Hyperion empfehlen, da gibt es inzwischen die Möglichkeit piblaster als Device anzugeben. Damit würdest du dir alles andere sparen, bis auf das neu erstellen der Konfiguration für hyperion

    //Edit: Klick

    Danke, habe jetzt auch mal Hyperion installiert. Jedoch weiß ich jetzt nicht wirklich weiter. Wie kann ich jetzt meine LEDs steuern?
    Mal noch als Info: Ich habe jetzt den roten Kanal auf GPIO 17, grün auf 22 und blau auf 24. Über pi-blaster kann ich sie auch perfekt ansteuern.
    Nur wie genau teile ich Hyperion dass dann mit, was er machen soll?

  • Code
    "device" :
        {
            "name"       : "MyPi",
            "type"       : "piblaster",
            "output"     : "/dev/piblaster",
            "assignment" : " r   g b "
        },

    Der Kopf der .conf müsste bei dir ungefähr so aussehen. Leerzeichen bei "assignment" sind wichtig.

    Einmal editiert, zuletzt von driftmonster (9. Februar 2015 um 01:44)

  • Ok, ich habe das nunmal alles soweit konfiguriert, mit leichten Anpassungen:

    Code
    "device" :
    {
    	"name"       : "MyPi",
    	"type"       : "piblaster",
    	"output"     : "/dev/pi-blaster",
    	"assignment" : " r  g b "
    },

    Bei dem Assignment hattest du glaube ich ein Leerzeichen zu viel. Wenn ich es richtig verstehe, sind es 8 Channels, wie man auch hier nachlesen kann: https://github.com/sarfata/pi-blaster

    Desweiteren habe ich noch unter LEDs drei Einträge gemacht, wie hier beschrieben: http://forum.osmc.tv/showthread.php…=92735#pid92735

    Wenn ich es nun teste mit

    Code
    hyperion-remote --priority 50 --color red --duration 5000


    passiert jedoch nichts.

    Das Problem taucht in oben genanntem Thread auch auf, sollte aber laut folgendem gefixed sein: http://forum.osmc.tv/showthread.php…=93044#pid93044

    Was mich noch irritiert: Wenn ich pi-blaster in die Konsole eingebe erhalte ich folgende ausgabe:

    Code
    Using hardware:                   PWM
    Number of channels:                 9
    PWM frequency:                 100 Hz
    PWM steps:                       1000
    Maximum period (100  %):      10000us
    Minimum period (0.100%):         10us

    Dort ist von 9 Channels die Rede.

    Hier mal noch meine komplette Config: http://pastebin.com/vg10z82f

    Edit: Kann ich mir evtl irgendwo von Hyperion einen Log ausgeben lassen? So kann ich sehen, was er auf die Eingabe des Testes macht.

    EDIT:
    Ich habe eben mal die beiden Prozesse beendet und dann neu gestartet mit:

    Code
    sudo pi-blaster
    sudo /etc/init.d/hyperion start

    Beim Start von Hyperion (oder auch beim Test mit Remote) kommt dann die Meldung

    Code
    Not a known pin for pi-blaster

    Diese Meldung kommt auch immer, wenn ich pi-blaster einen falschen pin gebe (z.B. echo "1=1" > /dev/pi-blaster)

    Dieser Fehler kommt aber nicht, wenn die beiden Programme beim Start automatisch gestartet wurden.

    EDIT2:
    Nach einem Neustart fällt mir auf, dass ich auf echo "1=1" > /dev/pi-blaster machen kann, ohne dass ich einen Fehler bekomme. Jedoch passiert dabei nichts. Scheint also so, als ob Hyperion mir die falschen Pins anspricht.

    Einmal editiert, zuletzt von pckhib (9. Februar 2015 um 18:20)


  • Ok, ich habe das nunmal alles soweit konfiguriert, mit leichten Anpassungen:

    Code
    "device" :
    {
    	"name"       : "MyPi",
    	"type"       : "piblaster",
    	"output"     : "/dev/pi-blaster",
    	"assignment" : " r  g b "
    },

    Bei dem Assignment hattest du glaube ich ein Leerzeichen zu viel. Wenn ich es richtig verstehe, sind es 8 Channels, wie man auch hier nachlesen kann: https://github.com/sarfata/pi-blaster

    Prinzipiell hast du recht, wenn du dich auf die Anleitung beziehst, im Code ist inzwischen allerdings schon der neunte GPIO nutzbar (27), daher muss das Leerzeichen schon rein ;)


    Desweiteren habe ich noch unter LEDs drei Einträge gemacht, wie hier beschrieben: http://forum.osmc.tv/showthread.php…=92735#pid92735

    Ich würde eigentlich nur einen Eintrag machen, der die ganze Fläche abdeckt.
    Der Rest resultiert wahrscheinlich aus dem Fehler beim Ansprechen von piblaster

    //Edit: Du kannst auch im Code die unbenutzten GPIO auskommentieren, dass du nur noch 3 übrig hast, dann solltest du auf alle Leerzeichen verzichten können.

    //Edit2: Im Code des Hyperion-Plugins ist alles auf 8 Kanäle abgestimmt, die Änderung würde aber nur zwei Stellen betreffen. Alternativ passt du die Anzahl auf 8 über das Auskommentieren im piblaster Code an, es reicht glaube ich sogar oben den zB GPIO27 wieder zu deaktivieren. Du müsstest lediglich neu compilieren und dann auch wirklich das Leerzeichen aus dem Header der Config löschen.

    Einmal editiert, zuletzt von driftmonster (9. Februar 2015 um 20:48)

  • Prinzipiell hast du recht, wenn du dich auf die Anleitung beziehst, im Code ist inzwischen allerdings schon der neunte GPIO nutzbar (27), daher muss das Leerzeichen schon rein ;)

    Ich würde eigentlich nur einen Eintrag machen, der die ganze Fläche abdeckt.
    Der Rest resultiert wahrscheinlich aus dem Fehler beim Ansprechen von piblaster


    Habe es nun geändert. Also einmal mit zusätzlichem Leerzeichen und einmal mit Leerzeichen + nur eine LED. Jedoch ohne Erfolg


    //Edit: Du kannst auch im Code die unbenutzten GPIO auskommentieren, dass du nur noch 3 übrig hast, dann solltest du auf alle Leerzeichen verzichten können.


    Wo soll ich das auskommentieren?


    //Edit2: Im Code des Hyperion-Plugins ist alles auf 8 Kanäle abgestimmt, die Änderung würde aber nur zwei Stellen betreffen. Alternativ passt du die Anzahl auf 8 über das Auskommentieren im piblaster Code an, es reicht glaube ich sogar oben den zB GPIO27 wieder zu deaktivieren. Du müsstest lediglich neu compilieren und dann auch wirklich das Leerzeichen aus dem Header der Config löschen.

    Habe nun den 27er Pin aus der pi-blaster.c entfernt, neu kompiliert, Leerzeichen wieder aus der config entfernt, alle Programme neu gestartet, auch mal den RPi neu gestartet, jedoch ohne Erfolg.

    Was ich eben auch echt merkwürdig finde, ist, dass wenn ich hyperion und pi-blaster beende und dann manuell neu starte ist folgendes:
    also erst pi-blaster starten mit:

    Code
    sudo ./pi-blaster


    dann hyperion:

    Code
    sudo /etc/init.d/hyperion start


    dann bekomme ich folgende Ausgabe:

    Ich vermute auch, dass genau an dieser Stelle der Fehler liegt. Denn wenn ich nun

    Code
    echo "0=0" > /dev/pi-blaster


    eingebe, erhalte ich ebenfalls den not a known pin Fehler.

    Wenn ich den RPi neu starte und die Programme im autostart gestartet werden, gibt es den Fehler nicht, auch wenn ich das besagte echo "0=0" teste.

    Deswegen vermute ich, dass hyperion die pins 0-3 oder ähnliches setzt. pi-blaster, bzw die benötigten pins reagieren bei mir aber nur auf die jeweilige GPIO-Pins (17, 22 und 24), also z.B. echo "17=1"


    In [älteren] Beiträgen im Web (z.B. hier) findet man es auch oft, dass eben mit 0 oder 1 gearbeitet wird, anstatt mit z.B. 17. Kann es sein, dass hier inzwischen einfach etwas geändert wurde und hyperion [noch] nicht darauf angepasst ist?


    EDIT:
    Genau so ist es. Habe mir eben eine ältere Version von pi-blaster geladen. Damals wurde mit Channels gearbeitet. Der Pin 17 liegt dabei auf dem Channel 1. Deswegen wird er mit echo "1=1" > /dev/pi-blaster aktiviert. Und plötzlich funktioniert auch hyperion damit. Es ist folglich nur nicht geupdatet worden.
    Ich werde dies bezüglich mal ein Ticket eröffnen.

    Vielen Dank für deine Hilfe. Ohne diese wäre ich wahrscheinlich nie so weit gekommen.

    Einmal editiert, zuletzt von pckhib (9. Februar 2015 um 21:33)

  • Freut mich dir geholfen zu haben ;)

    Hätte dir auch als nächsten Schritt mal meinen auch etwas älteren Quellcode geschickt, der arbeitet auch noch nach dem alten Prinzip.

    Über ein paar Bilder des Ergebnisses würde sich aber sicher nicht nur ich freuen ;)

  • So, hier nun die versprochenen Bilder. Die Farbe der kompletten Leiste passt sich dem TV-Bild an. Es wird als eine Farbe aus dem kompletten Bild generiert.

    Und eine Nahaufnahme der LED-Leiste:

  • Also ich nutze TIP120.
    Allerdings hänge ich an der gleichen Stelle wie der Threadersteller auf der ersten Seite.

    Ich kann z.bsp. mit echo "17=1" > /dev/pi-blaster
    die roten LEDs ansteuern. Aber in Hyperion tut sich nichts.
    Wenn ich eine ältere Version von Pi-Blaster nehme, wo Channels anstellle der GPIOs verwendet werden, tut sich bei mir allerindgs gar nichts.
    Zum ansteuern versuche ich es dann mit echo "1=1" > /dev/pi-blaster aber die LEDs leuchten dann nicht.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!