Hi, ich wollte in einer LED-Matrix Bilder darstellen. Dafür habe ich mit einem Programm etwas gezeichnet und in eine HEX Datei umgewandelt. Das habe ich dann auf meine Matrix geladen, jedoch zeigt das Ding nur murks an. Daher meine Frage: gibt es ein Programm mit dem man solche HEX-Dateien als Bild darstellen lassen kann um zu sehen ob der Code falsch ist oder die HEX Datei? Mfg
Matrix Schaltung geheim. Bild geheim. Umwandlung geheim. Murks unsichtbar. ..... Wird wohl schwer dir zu helfen.... Sagen wir mal so: Du hast mein volles Mitgefühl. (hilft dir das schon?)
Arduino Fanboy D. schrieb: > Matrix Schaltung geheim. *Bild *RGB LED P5 Matrix schimpft sie sich. > Bild geheim. *Bild > Umwandlung geheim.
1 | const uint8_t IMG20170819-WA0002 [] PROGMEM = { |
2 | |
3 | 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x60 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00, |
4 | 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x06 , 0x00 , 0x0C , 0x00 , 0x00 , 0x00 , 0x00 , 0x00, |
5 | 0x01 , 0x80 , 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x18 , 0x30 , 0x60 , 0x30 , 0x06 , 0x00 , 0x00 , 0x00 , 0x60, |
6 | 0x1F , 0xFF , 0xC0 , 0x3A , 0x80 , 0x00 , 0x01 , 0x80 , 0x00 , 0x86 , 0x00 , 0x60 , 0xC0 , 0x00 , 0x06 , 0x00, |
7 | 0x00 , 0x81 , 0xC0 , 0x40 , 0x00 , 0x00 , 0x18 , 0x00 , 0x00 , 0x80 , 0x30 , 0x40 , 0x00 , 0x00 , 0xE0 , 0x00, |
8 | 0x00 , 0x80 , 0x0C , 0x40 , 0x00 , 0x03 , 0x00 , 0x00 , 0x00 , 0x80 , 0x03 , 0x40 , 0x00 , 0x0C , 0x00 , 0x00, |
9 | 0x00 , 0x80 , 0x00 , 0xE0 , 0x03 , 0xFF , 0x00 , 0x00 , 0x00 , 0x80 , 0x00 , 0x3C , 0x00 , 0xE1 , 0x80 , 0x00, |
10 | 0x00 , 0x87 , 0xF8 , 0x0E , 0x07 , 0x20 , 0x00 , 0x00 , 0x00 , 0x84 , 0x00 , 0x02 , 0x98 , 0x10 , 0x00 , 0x00, |
11 | 0x00 , 0x87 , 0x80 , 0x00 , 0xE0 , 0x10 , 0x00 , 0x00 , 0x00 , 0x84 , 0x00 , 0x00 , 0xD8 , 0x10 , 0x00 , 0x00, |
12 | 0x00 , 0x84 , 0x00 , 0x06 , 0x46 , 0x10 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00, |
13 | 0x00 , 0x80 , 0x00 , 0xE0 , 0x40 , 0x70 , 0x00 , 0x00 , 0x00 , 0x00 , 0x03 , 0x00 , 0x40 , 0x18 , 0x00 , 0x00, |
14 | 0x00 , 0x00 , 0x0C , 0x00 , 0xC0 , 0x06 , 0x00 , 0x00 , 0x00 , 0x00 , 0x30 , 0x06 , 0x80 , 0x01 , 0xC0 , 0x00, |
15 | 0x00 , 0x00 , 0xC0 , 0xF8 , 0x00 , 0x00 , 0x30 , 0x00 , 0x00 , 0x07 , 0x00 , 0x00 , 0x00 , 0x00 , 0x0C , 0x00, |
16 | 0x00 , 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x03 , 0x00 , 0x00 , 0x60 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0xC0, |
17 | 0x01 , 0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x30 , 0x06 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x0C, |
18 | 0x08 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 |
19 | };
|
> Murks unsichtbar. *Bild > Sagen wir mal so: Du hast mein volles Mitgefühl. > (hilft dir das schon?) Die frage war ja auch ob es so ein Programm gibt aber Hilfe lehn ich nicht ab. etwas Besser fühl ich mich schon ja :D (mir fällt grad auf dass dieses Programm für LCD Displays gedacht und und die Pixel die ich zeichne schwarz sind...)
Kannst du: - alle Pixel in einer Farbe darstellen; - alle Pixel in der gleichen Farbe darstellen und die Farbe ändern; - das obere linke Pixel weiß, alle anderen Pixel aus machen; - das untere rechte Pixel weiß, alle anderen Pixel aus machen; - eine Diagonale quer durch das Bild darstellen? Falls ja, dann solltest du wissen, wie deine Daten aussehen müssen, um sie darzustellen. Dann kannst du dich an das Bild machen. Zur Ursprungsfrage: Schau dir das PNM-Bildformat an (bzw. die Gruppe der PNM-Bildformate). Die sind sehr nah dran, wenn auch dezimal oder binär statt hexadezimal. Nutze ich recht häufig, weil mit einem printf() und einer Schleife leicht herstellbar und von diversen Programmen unterstützt.
Die Magie der Auflösung und Ansteuerung :D Der Klassiker: RTFM und zwar das passende für die files UND das Display. Dann beiden mit einem coolen code verknüpfen und schon schaut's geil aus!
Franco O. schrieb: > *RGB LED P5 Matrix > schimpft sie sich. Du muß die Bits oder Bytes deines Bildes irgendwie auf die Bildpunkte Deiner Matrix fummeln. Was hast Du Dir dabei gedacht?
Franco O. schrieb: >> Umwandlung geheim Das ist das Ergebnis Deiner Überlegungen. Mich interessieren aber Deine Überlegungen. Du muß mir das er-klä-ren können. So kommst Du leichter Denkfehlern auf die Spur.
Franco O. schrieb: > bild.PNG Franco O. schrieb: > const uint8_t IMG20170819-WA0002 [] PROGMEM = { > ... > }; Bild und Hexdaten passen nicht zusammen. Das Originalbild sieht wohl eher so aus wie im Anhang. Franco O. schrieb: > (mir fällt grad auf dass dieses Programm für LCD Displays gedacht und > und die Pixel die ich zeichne schwarz sind...) Genau da liegt wohl der Hund begraben. Du musst erst einmal herausfinden, in welchem Format das Display die farbigen Pixeldaten erwartet (dazu gibt es sicher eine technische Beschreibung). Dann kannst du nach einem Tool suchen, das ein Bild (gegeben bspw. als PNG-Datei) in dieses Format umsetzt. Falls es dieses Tool nicht fertig gibt, musst du eins schreiben. Franco O. schrieb: > *RGB LED P5 Matrix > schimpft sie sich. Mit exakt dieser Bezeichnung kann ich nichts finden. Es gibt mehrere Displays ähnlichen Namens, die sich aber teilweise in der Ansteuerung, Farbtiefe usw. unterscheiden.
Hier die technischen Grundlagen zu dieser Art Displays: https://bikerglen.com/projects/lighting/led-panel-1up/
Antoni Stolenkov schrieb: > Franco O. schrieb: >>> Umwandlung geheim > > Das ist das Ergebnis Deiner Überlegungen. Mich interessieren aber Deine > Überlegungen. Du muß mir das er-klä-ren können. So kommst Du leichter > Denkfehlern auf die Spur. Ich hatte dieses Programm gefunden mit dem man eben solche Zeichnungen erstellen kann die das direkt in eine solche HEX Datei umwandelt. Ich habe ein Beispielcode von meiner Matrix in der ein HEX Code ist. Meine Überlegung war einfach meine Datei mit der aus dem Bsp. Code zu ersetzen. Aber wer hätte es gedacht es ist natürlich nicht so einfach wie ich mir dachte. Code hab ich mal angefügt. Yalu X. schrieb: > Du musst erst einmal herausfinden, in welchem Format das Display die > farbigen Pixeldaten erwartet (dazu gibt es sicher eine technische > Beschreibung). Dann kannst du nach einem Tool suchen, das ein Bild > (gegeben bspw. als PNG-Datei) in dieses Format umsetzt. Hier wurde ja ein Link für solche Displays gepostet. Lese ich mir mal durch und schaue mal. > Mit exakt dieser Bezeichnung kann ich nichts finden. Es gibt mehrere > Displays ähnlichen Namens, die sich aber teilweise in der Ansteuerung, > Farbtiefe usw. unterscheiden. Das wusste ich nicht danke ^^ Mfg
Franco O. schrieb: > Code.txt (21,4 KB, 6 Downloads) Einen TXT-Compiler muss man erstmal finden. Was empfiehlst du?
my2ct schrieb: > Franco O. schrieb: >> Code.txt (21,4 KB, 6 Downloads) > > Einen TXT-Compiler muss man erstmal finden. Was empfiehlst du? dafür habe ich den normalen Editor benutzt :)
Franco O. schrieb: > Code hab ich mal angefügt. Und damit ist der Mario auf dem Display angezeigt worden? Wenn ja, dann muss das Bild als Array von RGB565-Farbwerten vorliegen, und zwar zeilenweise. Das sehr rudimentäre Python-Progrämmchen img2c.py im Anhang generiert diese Daten aus einer Bilddatei (PNG, JPEG usw.). Aufruf von der Kommandozeile mit
1 | python img2c.py bild.png >bild.c |
Damit wird die Datei "bild.png" eingelesen, das Bild auf die Auflösung 64×32 skaliert und das Array mit den Hexdaten in "bild.c" geschrieben. Das Originalbild sollte ein Seitenverhältnis von 2:1 haben, sonst wird es bei der Konvertierung verzerrt. Statt "bild.png" und "bild.c" kannst du natürlich auch andere Dateinamen verwenden. Du musst dazu Python und Pillow jeweils in einer halbwegs aktuellen Version installiert haben: https://www.python.org/ https://pillow.readthedocs.io/en/latest/
Franco O. schrieb: > Meine Überlegung war einfach meine Datei mit der aus dem Bsp. Code zu > ersetzen. Wenn das so ist, kannst Du auf die Schnelle die Beispieldatei manipulieren um herauszufinden was das für Auswirkungen hat. Dasselbe machst Du mit deinem gezeichneten Bild. Also die Bilddatei manipulieren und im Zeichenprogramm die Auswirkungen beobachten.
Antoni Stolenkov schrieb: > Dasselbe machst Du mit deinem gezeichneten Bild. Also die Bilddatei > manipulieren und im Zeichenprogramm die Auswirkungen beobachten. meinst du damit random den Code zu ändern ? Yalu X. schrieb: > Wenn ja, dann muss das Bild als Array von RGB565-Farbwerten vorliegen, > und zwar zeilenweise. > > Das sehr rudimentäre Python-Progrämmchen img2c.py im Anhang generiert > diese Daten aus einer Bilddatei (PNG, JPEG usw.). >
1 | > python img2c.py bild.png >bild.c |
2 | > |
> > Damit wird die Datei "bild.png" eingelesen, das Bild auf die Auflösung > 64×32 skaliert und das Array mit den Hexdaten in "bild.c" geschrieben. > Das Originalbild sollte ein Seitenverhältnis von 2:1 haben, sonst wird > es bei der Konvertierung verzerrt. Statt "bild.png" und "bild.c" kannst > du natürlich auch andere Dateinamen verwenden. > > Du musst dazu Python und Pillow jeweils in einer halbwegs aktuellen > Version installiert haben: > > https://www.python.org/ > https://pillow.readthedocs.io/en/latest/ Werde mich gleich mal ransetzten danke :) zu meiner ursprungsfrage nochmal. Wie hast du die Hex-Codes Darstellen lassen? Mfg
Franco O. schrieb: > Wie hast du die Hex-Codes Darstellen lassen? Mit zwei kleinen Python-Programmen: - blackwhite.py 1 Bit/Pixel und - rgb565.py für 16 Bit/pixel im RGB565-Format Die Hexdaten aus deinen Beispielen habe ich der Einfachheit halber direkt in den Quellcode kopiert. Die Programme erzeugen jeweils eine PNG-Datei mit einer Mosaikdarstellung der Bilddaten.
Yalu X. schrieb: > Franco O. schrieb: >> Wie hast du die Hex-Codes Darstellen lassen? > > Mit zwei kleinen Python-Programmen: > > - blackwhite.py 1 Bit/Pixel und > > - rgb565.py für 16 Bit/pixel im RGB565-Format > > Die Hexdaten aus deinen Beispielen habe ich der Einfachheit halber > direkt in den Quellcode kopiert. Die Programme erzeugen jeweils eine > PNG-Datei mit einer Mosaikdarstellung der Bilddaten. Dankeschön braucht man bestimmt mal :)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.