Forum: Mikrocontroller und Digitale Elektronik HEX-Code in Bild


von Franco O. (Gast)


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

von Einer K. (Gast)


Lesenswert?

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

von Antoni Stolenkov (Gast)


Lesenswert?

Franco O. schrieb:
> HEX Datei

Ein Byte hat acht Bit.

von Franco O. (Gast)


Angehängte Dateien:

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

von S. R. (svenska)


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.

von NichtWichtig (Gast)


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!

von Antoni Stolenkov (Gast)


Lesenswert?

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?

von Antoni Stolenkov (Gast)


Lesenswert?

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.

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

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.

von Harry L. (mysth)


Lesenswert?

Hier die technischen Grundlagen zu dieser Art Displays:
https://bikerglen.com/projects/lighting/led-panel-1up/

von Franco O. (Gast)


Angehängte Dateien:

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

von my2ct (Gast)


Lesenswert?

Franco O. schrieb:
> Code.txt (21,4 KB, 6 Downloads)

Einen TXT-Compiler muss man erstmal finden. Was empfiehlst du?

von Franco O. (Gast)


Lesenswert?

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

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

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/

von Antoni Stolenkov (Gast)


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.

von Franco O. (Gast)


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

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

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.

von Franco O. (Gast)


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

von Antoni Stolenkov (Gast)


Lesenswert?

Franco O. schrieb:
> meinst du damit random den Code zu ändern ?

Was für ein Scherzkeks.

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
Noch kein Account? Hier anmelden.