Open Source Led Matrix Steuerung: PixelController

  • klar, ne Videograb-Funktion wäre auch super, da könnte man das dann ganz easy erweitern, indem man einfach andere Animationen "abfilmt" - aber das geht ja in Java nicht so einfach, das darf ja nicht auf den Bildschirmspeicher zugreifen..? (oder war das Flash..?)


    https://github.com/downloads/n…ller-1.0.3.6-SNAPSHOT.zip


    gute idee! du kannst den x/y offset einstellen, wo gegrabbt wird. die grösse des grabbing windows ist 128 pixel.


    Mehr Effekte wären halt auch noch schön, aber wie gesagt, die müsste man ja alle einzeln programmieren...


    hast du eine konkrete idee?



    Evtl. doch das Umsortieren für auf versch. Arten anders verkabelte Matrixen gleich bei Dir in der SW - hätte den Vorteil, dass man auch mit dem "normalen" SEDU größere Matrixen betreiben könnte, weil dann muss ich die Bytes nicht mehr umsortieren, sondern kann sie gleich wie sie rein kommen weiter schicken, also kein RAM nötig, also auch 1.024 Pixel mit dem Mega16 möglich.


    kann ich machen, ja. weil das mache ich ja schon für meine pixelinvaders panels.


    cheers!


    Edit: habe soeben die 1.0.3.6er version raufgeladen, nun kannst du minidmx devices konfigurieren:


    #settings for miniDmx device, valid options:
    # NO_ROTATE,
    # ROTATE_90,
    # ROTATE_90_FLIPPEDY,
    # ROTATE_180,
    # ROTATE_180_FLIPPEDY,
    # ROTATE_270
    #minidmx.layout=NO_ROTATE


    meine frage ist noch, brauchst du eine einstellung füt "schlangenlinien", damit jede zweite zeile geflippt wird?

  • Hi Michu,


    tiptop Sache, Du bist mein Held! :thumbup:


    Wegen den Effekten, cool wäre halt so eine Art "Pixelregen", also dass einfach Punkte von oben runterfallen, so ähnlich wie bei "Matrix" (der Film) diese Schriftzeichen... ideal mit optional Sound-Steuerung, also dass bei jedem Basschlag so ein "Schauer" kommt...


    dann noch so ne Art "Geflimmer", also im Prinzip wie das "Metaballs", nur eben kleinere Punkte, mehr davon (so 24 ca.?) und ohne den weichen Rand, und schneller...


    im Prinzip so wie hier (Video von 2bl hier aus dem Forum) am Anfang:


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    sowas wie hier ist auch cool:


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    ganz am Anfang diese 2 weißen Flächen, die von der Mitte her auseinander gehen... und bei ca.1:00 diese weißen Linien, die hin- und her gehen - die müssten nicht mal so "pendeln", nur hin- und her wandern, und es reichen auch 4, max. 5, sonst kann man die bei der Auflösung (16x16 oder 20x10) eh' nicht mehr unterscheiden...


    statt den 2 weißen Flächen sollte sowas wie im ersten Video am Schluß evtl. auch leichter zu machen sein, sind praktisch nur Kreise, die größer werden....


    am Besten alle Effekte in weiß, dann kann man sie mit den "Tint"-Reglern beliebig einfärben...


    da musst (müssen sowieso nicht!) Du Dir aber keinen Stress machen, das probiere ich erst mal selbst in Processing, kann ich ja in nem kleinen Screen machen (dann packt's mein Rechner evtl. noch zusätzlich :D) und "abfilmen"


    wegen der Verkabelung: eigentlich ist Schlangenlinien sogar wichtiger als ohne, weil die meisten werden die Matrix so verkabeln, da wird keiner lange Leitungen vom Ende der vorherigen zum Anfang der nächsten Zeile ziehen... ;)

    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!

  • Hi!


    Das ist wirklich ein super Projekt.


    Ich möchte eine Matrix mit 160 RGB Pixeln über Artnet ansteuern.


    Grundsätzlich funktioniert es, nur muss ich einen Patch passend zu meiner Installation anlegen.


    Höhe: 8 Pixel
    Breite: 20 Pixel
    -> 480 DMX Kanäle (RGB jeweils 1 Kanal)


    Wie kann ich einen Patch anlegen, in dem ich die Anordnung meiner Pixel beschreiben kann?


    Danke für einen Tip :)

  • Mit grundsätzlich meine ich, dass meine Hardware die Artnet Signale Deiner Software empfängt und verarbeiten kann.


    Als Patch bezeichne ich die Anordnung der LEDs in der Matrix.


    Die Matrix ist 8 LEDs in der Höhe und 20 LEDs in der Breite.
    Dabei handelt es sich um RGB Multichip LED, wobei jede LEDs 3 DMX Kanäle verwendet.


    Ich möchte nun der PixelController Software erklären wie die Reihenfolge der LEDs im Bezug auf die Matrix ist.


    Die 1. der 160 LEDs befindet sich in diesem Fall unten links.
    Da immer 16 LEDs auf einem Modul sind, wird dann entsprechend in einem Quadrat aus 4x4 LEDs die LED 1-16 zu finden sein.


    Jetzt sind dann 10 dieser LED Module mit 16 LEDs in der Matrix angeordnet.
    2 in der Höhe und 5 in der Breite.


    Die Module sind in Schlangenlinien verbunden um die DMX Leitung möglichst kurz zu halten.


    Kannst ich diese Anordnung in PixelController darstellen?

  • wegen der Verkabelung: eigentlich ist Schlangenlinien sogar wichtiger als ohne, weil die meisten werden die Matrix so verkabeln, da wird keiner lange Leitungen vom Ende der vorherigen zum Anfang der nächsten Zeile ziehen


    pesi, dein wunsch ist mir befehl:
    #flip each second scanline
    #minidmx.snake.cabling=true


    https://github.com/downloads/n…ller-1.0.3.7-SNAPSHOT.zip


    kannst du mir bestätigen, dass das ding fliegt?


    cheers


    edit: wegen den generatoren, ich habe im sinn ein partikel system hinzuzufügen, da kann man verschiedene animationen machen (regen, schnee, firework, ...)

  • Die Matrix ist 8 LEDs in der Höhe und 20 LEDs in der Breite.
    Dabei handelt es sich um RGB Multichip LED, wobei jede LEDs 3 DMX Kanäle verwendet.


    Ich möchte nun der PixelController Software erklären wie die Reihenfolge der LEDs im Bezug auf die Matrix ist.


    Die 1. der 160 LEDs befindet sich in diesem Fall unten links.
    Da immer 16 LEDs auf einem Modul sind, wird dann entsprechend in einem Quadrat aus 4x4 LEDs die LED 1-16 zu finden sein


    hey armin, was ist denn das für ne led matrix, hast du da mehr infos? ich habe keine ahnung von artnet, aber eigentlich geht alles, aussert die reihenfolge der pixel? stimmt das so? farben stimmen, sprich wenn du ein grünes bild anzeigst, erschein es auch grün bei dir?

  • Artnet ist im Prinzip nix anderes als DMX über Ethernet... da hat doch jemand ein Ausgabe-Plugin für Deine SW gemacht, das gibt die Daten per Artnet raus, ein "Artnet-Node" empfängt das dann über Ethernet (kann auch lokal am selben Rechner sein) und gibt normales DMX raus...


    das werden eben so DMX-Matrix-Panels sein, wo auf jedem Panel (4x4) die Kanäle der Reihe nach angeordnet sind - dadurch ist die Matrix insgesamt praktisch kreuz und quer "verkabelt"...


    in der Lichttechnik sagt man "patchen" zu dem Vorgang, einer Lampe einen DMX-Kanal (oder Dimmerkanal, gibt auch Patchfelder an größeren Dimmerracks - siehe z.B. hier, der Kabelwirrwarr oben drauf) zuzuweisen.


    armin: bei Dir wäre das wohl am einfachsten eben mit ner Patchtabelle - Wert 1 kommt, wird in der Tabelle nachgeguckt, wo der hin gehört, dort gespeichert - Wert 2 kommt, wird wieder in der Tabelle nachgeguckt, usw.


    die Tabelle müsste dann am sinnvollsten wohl in das Artnet-Ausgabe-Plugin rein - da praktisch einfach das Array umsortieren vor der Ausgabe.


    Michu: danke für die erneute Erweiterung! :) - ich habe leider i.M. keine Matrix zum testen hier - Nino, könntest Du das auf Deiner 10x10 mal probieren...? - einfach die SW aus der Lobby nehmen, die die Daten nicht umsortiert...


    Und das mit dem Partikelsystem klingt gut, mein Kumpel spielt auch mit sowas rum - siehe z.B. hier... der programmiert übrigens auch auf Mac, ist aber i.M. für 2 Monate in Japan zum Wandern...

    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!

  • Hallo


    Ich versuche die Software unter Mac OS-X 10.6 zu starten, also die Sh Datei im Terminal ausführen aber dann passiert nichts.


    Code
    Caused by: java.lang.ClassNotFoundException: com.neophob.PixelController
    	at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)


    dieser Code wird dann im Terminal ausgegeben.


    Mache ich was falsch oder muss ich noch irgendwelche Plugins installieren.
    PD habe ich installiert und die Datei kann ich auch öffnen.


    Gruß Jonas



    --
    Solardusche und Outdoorequipment
    https://meinelement.com


    Hochzeits DJ, Veranstaltungstechnik
    https://bsu-events.de

  • Ich versuche die Software unter Mac OS-X 10.6 zu starten, also die Sh Datei im Terminal ausführen aber dann passiert nichts.


    ich selber verwende osx 10.6 - das wird nicht das problem sein. wie startest du das program? geh mal im terminal in das verzeichnis wo das startscript liegt und führe es dann aus, dann wirds funktionieren


    gruss

  • die Tabelle müsste dann am sinnvollsten wohl in das Artnet-Ausgabe-Plugin rein - da praktisch einfach das Array umsortieren vor der Ausgabe.


    schwirrte mir auch so im kopf rum, also nur das wir uns verstehen, angenommen ich habe ein 4*2 matrix würde ich die verkableung so definieren


    0,1,4,5,
    2,3,6,7


    oder?


    und danke für die aufklärung ;)

  • Ein Vorschlag bzgl. dem Anordnen einer Matrix am Beispiel meiner 160 Pixel Matrix.


    Ich denke bzgl. der Anordnung der LEDs ist eine Tabelle mit x und y-Koordinaten sinnvoll.


    Grundüberlegung:
    Breite der Matrix 20 Pixel -> x-Koordinaten müssen von 1-20 bereitgestellt werden
    Höhe der Matrix 8 Pixel -> y-Koordinaten müssen von 1-8 bereitgestellt werden.
    Es ist somit eine Matrix im "Querformat"


    Beispiel zum Eingeben der Daten:


    Position (x) - Position (y) - LED Nr. - DMX Kanal
    1 - 1 - 1 - 1
    1 - 2 - 2 - 4
    1 - 3 - 3 - 7
    1 - 4 - 4 - 9
    2 - 1 - 5 - 12
    ...
    20 - 8 - 160 - 478


    Über die Position x und y wird die LED Position definiert.
    Die LED Nr. dient der Orientierung.
    Der DMX Kanal ist der 1. der 3. zu verwendenden Kanäle.


    Alternativ ist die Erweiterung der Tabelle um folgende Spalten sinnvoll:


    DMX Kanal (R) - DMX Kanal (G) - DMX Kanal (B)


    Position (x) - Position (y) - LED Nr. - DMX Kanal (R) - DMX Kanal (G) - DMX Kanal (B)
    1 - 1 - 1 - 1 - 2 - 3
    ...
    20 - 8 - 160 - 478 - 479 - 480


    Durch eine derartige Darstellung kann jeder seine Pixel im Raum anordnen und seine Verkabelung beschreiben.


    Wenn man diese Beschreibung an das Artnet-Ausgabe-Plugin als Config Datei übergeben kann wäre das eine super Sache!


    Ich kann das gerne auch testen. Habe passende Hardware hier.


    Wo im Source Code ist die Umsortierung für das Ausgabe-Plugin einzufügen?
    Wenn jemand mir einen Hinweis gibt wo ich starten muss kann ich es versuchen zu programmieren :)

  • also unter https://github.com/downloads/n…ller-1.0.3.8-SNAPSHOT.zip habe ich die outputplugins für artnet und dmx angepasst.


    die konfig sieht nun folgendermassen aus:



    für artnet kann also neu die grösse der matrix, ob schlangenlinien-verkabelung verwendet wird, rotierung etc. definiert werden. diese optionen waren alle bereits für miniDmx vorhanden.


    @steini: kannst du das mal testen?
    @pesi/turi: könnt ihr auch testen ob das ganze immer noch funktioniert wie bis anhin mit dem sedu board?
    armin: schau mal, ob du deine matrix auch so verwenden kannst. die osurce liegt auf github (https://github.com/neophob/Pix…/output/ArtnetDevice.java)


    nochwas zum artnet output:
    -es wird das universum 0,0 verwendet: was ist das? muss das konfigurierbar sein?
    -es wird eine sequenzid von 0..255 verwendet. ok so?


    cheers

  • Ich kann nur testen, ob überhaupt noch was rauskommt, ob das mit dem Umsortieren funktioniert, leider nicht, da wie gesagt i.M. keine Matrix hier...


    Turi ist i.M. viel unterwegs, kann also noch ein paar Tage dauern..


    dem armin wird das mit dem Umdrehen etc. nicht viel helfen, da seine Matrix ja praktisch kreuz und quer verkabelt ist...


    wegen dem Umsortieren: LED-Nr. und X/Y-Position eingeben ist eigentlich unnötig, ist ja doppelt gemoppelt


    ich würde das so machen: man muss ja letztlich nur die Reihenfolge der Bytes vertauschen, also eine einfache Zuweisung Byte kommt mit Nr. a rein und geht mit Nr. b raus - da reicht eine einfache Tabelle - kleines Beispiel, man hat DMX-Module so verkabelt:



    die kleinen schwarzen Zahlen sind die "logische" Reihenfolge der Pixel, so wie sie vom Generator kommen - die großen roten sind die Position in der DMX-Kette (nicht DMX-Adresse, diese ist x3, wenn es drei Byte pro Pixel sind)


    die Tabelle an sich besteht nun einfach aus den roten Zahlen:


    13, 14, 9, 10
    15, 16, 11, 12
    1, 2, 5, 6
    3, 4, 7, 8


    nicht nötig, da pro Pixel gleich 4 oder mehr Zahlen anzugeben.... ;)


    man geht also einfach in einer Schleife durch, holt sich pro "logischer Position" (diese wird einfach hochgezählt) die Zieladresse aus der Tabelle, an diese wird das Pixel dann gespeichert - da es ja drei Byte pro Pixel sind, beim Array-Index berechnen also einfach die Adresse mal 3 + Farbnummer dazu


    also praktisch, das erste Pixel was rein kommt, ist das 13. was raus geht, das 10. Pixel das rein kommt ist das 2. was raus geht, usw.


    so mache ich das in meiner SW auf dem SEDU auch, man kann da also *beliebig* jeder Quell-Position jede Ziel-Position zuweisen.


    hier müsste man das dann in dem Artnet-Ausgabe-Plugin machen, einfach vor der tatsächlichen Ausgabe noch mal das Array umsortieren - die Tabelle dazu kann man ja aus der config.properties lesen, damit man an der SW selbst nicht jedes Mal was ändern muss...


    kann das auch gerne mal in Pseudo-Code schreiben, wenn's was hilft...


    Michu: Ein "Universe" ist die übergeordnete Einheit, ein DMX-Universe hat immer 512 Kanäle, wenn die nicht reichen, macht man ein weiteres Universe mit ebenfalls 512 Kanälen (ist dan auch HW-mäßig ne eigene Leitung) usw. - also praktisch DMX-Adresse wie Hausnummer, Universe wäre dann die Straße... ;)

    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!

  • aha wieder mal was gelernt ;) danke


    eine 20x8 matrix sollte also noch gerade mit einem universum auskommen...


    das mit dem umsortieren werde ich bei gelegenheit noch hinzufügen, man hat dann die option
    output.snake.cabling


    oder


    output.mapping=13,14,9,10,15,16,11,12 ...


    zur verfügung (natürlich nur eine).


    dann sollte dieses thema auch gegessen sein!


    besten dank pesi

  • also unter https://github.com/downloads/neophob/Pix?.8-SNAPSHOT.zip habe ich die outputplugins für artnet und dmx angepasst.


    die konfig sieht nun folgendermassen aus:


    Ich habe die Datei geladen.


    Beim Ausführen von sh PixelController.sh erhalte ich auf dem Mac folgende Fehlermeldung:


    armin$ sh PixelController.sh
    : command not found line 19:
    : command not found line 21:
    : command not found line 23:
    ': not a valid identifier24: export: `
    : No such file or directory: ./classpath-unix.properties


    Die Version davor geht ohne Probleme.


    Woran liegt das?


    Gruß armin :)

  • michuNeo wirklich cool wie du dich um die Entwicklung kümmerst :)


    Bin jetzt Zuhause und wollte das mal testen mit der direkten Eingabe ins Terminal.


    habe mit cd in den Ordner von PixelController gewechselt
    und dann habe ich die Datei mit ./PixelController.sh aufgerufen aber bekomme nur immer die Fehlermeldung


    Kannst du mir vllt mal genau sagen was du eingibst?



    --
    Solardusche und Outdoorequipment
    https://meinelement.com


    Hochzeits DJ, Veranstaltungstechnik
    https://www.bsu-events.de


  • Hi Steiny,


    versuche bitte "sh PixelController.sh" einzugeben dann sollte es gehen :)