HEX-Code in Bild

Gast #5989304
Lesenswert?

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
Gast #5989326
Lesenswert?

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...)
Angehängte Dateien:
#5989333
Lesenswert?

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.
Gast #5989340
Lesenswert?

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!
Moderator #5989507
Lesenswert?

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.
Angehängte Dateien:
Gast #5990285
Lesenswert?

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
Angehängte Dateien:
Moderator #5990471
Lesenswert?

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/
Angehängte Dateien:
Gast #5991526
Lesenswert?

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.
Gast #5993419
Lesenswert?

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
Moderator #5993506
Lesenswert?

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.
Angehängte Dateien:
Gast #5993915
Lesenswert?

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 :)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren