hallo ich nutze ein adafruit display 2,8" mit ili9341 controller (240 x 320). ich habe mir grafiken erstellt in einer pixelgröße von 115 x 160. da ich allerdings 16 verschiedene bilder benötige, reicht der speicher einfach nicht aus. Welche Möglichkeiten fallen euch da ein, um dieses Problem zu umgehen?? Würde mich sehr über hilfreiche tipps freuen.
Aus diesem Grund haben so viele LCD-Breakouts Slots für SD-Karten. Entweder Du strickst einen externen Speicher an den Prozessor den Du benutzt oder Du wechselst auf einen Prozessor mit mehr Speicher.
Es gibt RAM mit SPI Schnittstelle von Microchip http://www.microchip.com/design-centers/memory/serial-sram-serial-nvsram/overview Oder natürlich EEPROMs, falls es sich um statische Bilder handelt http://www.microchip.com/design-centers/memory/serial-eeprom/serial-eeprom
Oder Du baust eine Kompression ein. Um welche Graphiken handelt es sich? Übrigens wäre die Angabe des Controllers und seiner Speichergröße bei Deiner Frage hilfreich. gruß, Stefan
Stefan K. schrieb: > Oder Du baust eine Kompression ein. Um welche Graphiken handelt es sich? > Übrigens wäre die Angabe des Controllers und seiner Speichergröße bei > Deiner Frage hilfreich. es handelt sich um statische bilder, die ich bereits in monochrom bitmaps umgewandelt habe. controller ist: AT90CAN128 (128k Flash, 4k SRAM, 4k EEPROM) eine konvertierte grafik (in die c.datei) hat im moment 188 kb :D
peter schrieb: > ein adafruit display 2,8" mit ili9341 controller Das müsste ja bereits einen SD-SLot mit drauf haben.... .... das wäre dann schon die halbe Miete. Die andere Hälfte ist dann ein existierendes Filesystem auf deinen Controller anzupassen. Dann kannst du mit SD-Karten jonglieren ....
Schwarz-weiss oder Graustufen? Bei Schwarz-weiss bekommst Du 2300 byte pro Bild, das sollte locker reinpassen. Bei Graustufen kannst Du ev. eine Verschlüsselung verwenden. wenn es sich um Graphiken oder technische Darstellungen handelt, dann kann das mit wenig Aufwand sehr effektiv sein (z.B. Run-length-Kodierung: https://de.wikipedia.org/wiki/Laufl%C3%A4ngenkodierung). Bei Graustufenbildern wird es schon schwieriger. Gruß, Stefan
peter schrieb: > es handelt sich um statische bilder, die ich bereits in monochrom > bitmaps umgewandelt habe. > eine konvertierte grafik (in die c.datei) hat im moment 188 kb :D Was genau hat 188kb? Die Daten, die die c-Datei beschreibt oder ist das die Größe der c-Datei? Eine Monochrom-Graphik mit 115*160 8bit Graustufenpixel hat 18400 Byte. Selbst ein RGB-Bild kommt unkomprimiert "nur" auf 55,2kbyte.
:
Bearbeitet durch User
wie kommst auf die 2300 byte? das fertige bitmap hat 11 KB ja ich habe einen sd slot. wollte es aber zunächst ohne lösen. RLE methode sieht gar nicht schlecht aus
115 * 160 Pixel = 18400 Pixel. Schwarzweiss-Darstellung: 1 Pixel = 1 Bit -> 18400 Pixel = 18400 Bit = 18400/8 Byte = 2300 Byte.
Die Frage, die sich mir stellt ist: ok, ich könnte die bitmaps auf einer sd karte speichern. was mir aber den platz raubt, sind ja die generierten c-dateien (188 kb / datei). da bringt mir die sd karte ja nicht so viel
??? Die c-Dateien liegen normalerweise auf Deinem PC und nicht auf dem Microcontroller. Der interessiert sich nur für das (gg. komprimierte Bitmap). Und der PC sollte seit 1985 Platz für 16 * 188kb gerade noch übrig haben?
Stefan K. schrieb: > ??? > Die c-Dateien liegen normalerweise auf Deinem PC und nicht auf dem > Microcontroller. Der interessiert sich nur für das (gg. komprimierte > Bitmap). Und der PC sollte seit 1985 Platz für 16 * 188kb gerade noch > übrig haben? aber schau dir mal die datei an und was da alles drin steht ;)
und schwarz weiß ist ja bereits wenn ich ein monochromes bitmap draus mache oder?
peter schrieb: > aber schau dir mal die datei an und was da alles drin steht ;) Wenn ich das jetzt mal deute: > // Generated by : ImageConverter 565 v2.3 dann ist das nicht monochrom - also 1Bit / Pixel - sondern das 5Rot6Gruen5Blau-Format für 16-Bit LCD-Farben, also 16 Bit/Pixel. Du brauchst einen anderen Konverter un eine andere Grafik-Lib für Monochrom-Bilder.
peter schrieb: > und schwarz weiß ist ja bereits wenn ich ein monochromes bitmap draus > mache oder? Dein Bild hat 16-Bit Farben von denen aber nur Schwarz und Weiß verwendet werden. -> Falsch konvertiert.
Thomas F. schrieb: > peter schrieb: >> aber schau dir mal die datei an und was da alles drin steht ;) > > Wenn ich das jetzt mal deute: > >> // Generated by : ImageConverter 565 v2.3 > > dann ist das nicht monochrom - also 1Bit / Pixel - sondern das > 5Rot6Gruen5Blau-Format für 16-Bit LCD-Farben, also 16 Bit/Pixel. > > Du brauchst einen anderen Konverter un eine andere Grafik-Lib für > Monochrom-Bilder. aber ich habe in paint bereits aus dem png bild ein monochromes bitmap erstellt. das hab ich in den converterer geladen und mir die datei generieren lassen
In Deinem Bitmap ist jeder Pixel mit einem 16Bit Grauwert kodiert. Bei den allermeisten Pixeln benutzt Du aber nur schwarz (0xffff) oder weiss (0x0000) (Kodierung kann auch umgekehrt sein). Nur in den Übergängen zwischen schwarz-weiss hast Du manchmal Grauwerte. Falls Du diese nicht unbedingt brauchst, kommst Du auch mit einer Kodierung von 1 Bit pro Pixel aus - was den Speicherbedarg um den Faktor 16 verringert. Falls Du das - aus welchen Gründen auch immer - nicht machen willst: die oben gezeigte Graphik eignet sich hervorragend für rlc. Würde sicher den Faktor 1:10 bringen. Im Übrigen ist die Bildgröße 115 * 180 Pixel und nicht wie oben angegeben 115 * 160 Pixel.
Stefan K. schrieb: > In Deinem Bitmap ist jeder Pixel mit einem 16Bit Grauwert kodiert. Bei > den allermeisten Pixeln benutzt Du aber nur schwarz (0xffff) oder weiss > (0x0000) (Kodierung kann auch umgekehrt sein). Nur in den Übergängen > zwischen schwarz-weiss hast Du manchmal Grauwerte. Falls Du diese nicht > unbedingt brauchst, kommst Du auch mit einer Kodierung von 1 Bit pro > Pixel aus - was den Speicherbedarg um den Faktor 16 verringert. ok wo kann ich das am besten machen ?? natürlich würde schwarz weiß ausreichen > Falls Du das - aus welchen Gründen auch immer - nicht machen willst: die > oben gezeigte Graphik eignet sich hervorragend für rlc. Würde sicher den > Faktor 1:10 bringen. > > Im Übrigen ist die Bildgröße 115 * 180 Pixel und nicht wie oben > angegeben 115 * 160 Pixel. ja stimmt. sorry.
Ich kenne ehrlich gesagt Dein Tool "ImageConverter 565 v2.3" nicht. Ist das bei Arduino mit dabei?
oder würde es einfach genügen, wenn ich im code nur die 0x00 und die 0xFF drin lasse und den rest rausnehme oder zerschiest mir das dann alles?
peter schrieb: > ok wo kann ich das am besten machen ?? natürlich würde schwarz weiß > ausreichen Im Paint unter "Datei speichern" das Bildformat "BMP monochrom" auswählen. (Habs nicht getestet)
Thomas F. schrieb: > Im Paint unter "Datei speichern" das Bildformat "BMP monochrom" > auswählen. das hab ich aber genau so gemacht
peter schrieb: > oder würde es einfach genügen, wenn ich im code nur die 0x00 und die > 0xFF drin lasse und den rest rausnehme oder zerschiest mir das dann > alles? Letzteres.
peter schrieb: > das hab ich aber genau so gemacht Dann hat der ImageConverter 565 das wieder in 16 Bit zurück verwandelt. Andere Software verwenden.
Du brauchst einen Image-Konverter, der jedes Pixel in nur einem Bit speichern kann. K.A. ob das der ImageConverter 565 v2.3 kann. Zusätzlich musst Du diese bit-kodierten Graphiken auch ausgeben können. Ob es dafür eine Funktion in Deiner Graphik-Library gibt, musst Du nachschauen.
http://www.14core.com/c-array-generator/ Image to Array Generator sieht aus, als ob es das macht, was Du willst. Pixels/Byte auf 8 stellen. Vorsicht: Habe ich nur gegoogelt und nicht selbst verwendet. Zusätzlich musst Du diese bit-kodierten Graphiken auch ausgeben können. Ob es dafür eine Funktion in Deiner Graphik-Library gibt, musst Du nachschauen.
peter schrieb: > habt ihr ein gutes programm auf lager?? Suche mal hier im Forum, dazu gabs in der Vergangenheit schon mehrere Anfrage. z.B. Beitrag "Grafikkonverter Tool für AVR/Mikrocontroller (BMP2C, BMP2ASM, BMP2BASCOM)"
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.