Hallo alles zusammen, ich stehe vor folgender Herausforderung: Auf einem TFT Display mit SPI Interface (GC9A01) angesteuert durch ESP32 sollen Roboteraugen wie beim Vector Robot bzw. Emo Robot animiert werden. Bisher habe ich das mit Frames versucht, was auch erfolgreich geklappt hat. Das Ergebnis war nicht so schön wie bei den oben genannten Robotern, aber immerhin ein Erfolg. Doch wenn es um mehrere Animationen geht, stößt der Esp32 natürlich an seine Grenzen, was den Speicher angeht. Nun frage ich mich, wie man so komplexe Animationen auf dem Display darstellen kann, sodass auch die Bildrate nicht darunter leidet. Ich dachte da an eine SD Karte, doch das wird die Bildfrequenz eher beeinträchtigen. Wie würdet ihr das angehen?
:
Bearbeitet durch User
Edwin N. schrieb: > Wie würdet ihr das angehen? Vektor Grafiken (z.B. svg) brauchen nur wenig Speicher, sind dafür Rechen-Intensiver. Du könntest die Bilder durch Code generieren, indem du sie aus gefüllten geometrischen Figuren zusammen setzt.
Sind die Augen schon in Hinter- und Vordergrund getrennt? Die Augen selber sind ja kleiner und da könnte schon das gleiche Image an verschiedenen Positionen mit verschiedenen Rotationen gemalt werden. Edit: habe das Vector Video erst jetzt gesehen: das ist von der Rechenpower und Sensorik her ja ein fahrendes Smartphone. Kennst du die lvgl Grafik Lib? Die bietet einiges was man dafür brauchen kann.
:
Bearbeitet durch User
Stefan ⛄ F. schrieb: > Edwin N. schrieb: >> Wie würdet ihr das angehen? > > Vektor Grafiken (z.B. svg) brauchen nur wenig Speicher, sind dafür > Rechen-Intensiver. Du könntest die Bilder durch Code generieren, indem > du sie aus gefüllten geometrischen Figuren zusammen setzt. An sowas habe ich auch schon gedacht. Heißt das ich müsste jedes Frame code basiert "malen"? Klingt nach sehr viel Arbeit. Danke, ich werde das auf jeden Fall in Betracht ziehen.
J. S. schrieb: > Sind die Augen schon in Hinter- und Vordergrund getrennt? Die Augen > selber sind ja kleiner und da könnte schon das gleiche Image an > verschiedenen Positionen mit verschiedenen Rotationen gemalt werden. > > Edit: habe das Vector Video erst jetzt gesehen: das ist von der > Rechenpower und Sensorik her ja ein fahrendes Smartphone. > > Kennst du die lvgl Grafik Lib? Die bietet einiges was man dafür brauchen > kann. Was ich bis jetzt gemacht habe ist, dass ich aus einem Gif Frames im jpeg Format generiegt und diese dann in C-Code Array unmewandelt habe. Da der Hintergrund schwarz ist, stehen da lauter 0x00. Also habe ich den Hintergrund vom Vordergrund nicht getrennt. Wüßte auch nicht wie das mit dieser Methode gehen sollte. Danke für den Rat mit der lvgl bib. Werde ich mit näher angucken.
Lvgl hat jetzt auch Rlottie integriert: https://docs.lvgl.io/master/libs/rlottie.html Das lässt sich vermutlich auch ohne lvgl nutzen wenn man die lvgl Features nicht braucht. Aber da es für lvgl auch viele ESP Beispiele gibt ist es evtl doch einfacher mit. https://github.com/Samsung/rlottie
J. S. schrieb: > Lvgl hat jetzt auch Rlottie integriert: > https://docs.lvgl.io/master/libs/rlottie.html > Das lässt sich vermutlich auch ohne lvgl nutzen wenn man die lvgl > Features nicht braucht. Aber da es für lvgl auch viele ESP Beispiele > gibt ist es evtl doch einfacher mit. > > https://github.com/Samsung/rlottie Wow! Das ist super. Danke für diese Info. Ich werde mich in die Doku einlesen.
ich habe auch noch etwas nach Rlottie gesucht, sieht gut aus, aber ganz einfach zu erstellen sieht das nicht aus. Deutlich einfacher ist es mit Images zu arbeiten: https://docs.lvgl.io/master/widgets/core/img.html
Edwin N. schrieb: > Heißt das ich müsste jedes Frame > code basiert "malen"? Klingt nach sehr viel Arbeit. Ja, aber die CPU ist doch leistungsstark.
und dieses Issue ist schon alt, da sieht man auch schöne Beispiele, scheint also doch zu gehen: https://github.com/lvgl/lv_lib_rlottie/issues/3
Stefan ⛄ F. schrieb: >> Heißt das ich müsste jedes Frame >> code basiert "malen"? Klingt nach sehr viel Arbeit. > Ja, aber die CPU ist doch leistungsstark. Das packt die CPU locker, siehe: https://www.reddit.com/r/esp32/comments/myc3zr/some_real_time_3d_rendering_on_the_esp32/
J. S. schrieb: > ich habe auch noch etwas nach Rlottie gesucht, sieht gut aus, aber ganz > einfach zu erstellen sieht das nicht aus. > Deutlich einfacher ist es mit Images zu arbeiten: > https://docs.lvgl.io/master/widgets/core/img.html Das heißt in meinem Fall komme ich bei dieser Lösung ohne SD Karte nicht weiter!? Gut. Jeder Ansatz ist grade wichtig und richtig finde ich. Danke😊
Die Images kann man auch aus dem Flash holen, lvgl hat einen Generator um die Grafik in ein Bytearray zu packen. Die ESP gibt es ja mit PSRAM und mehr oder weniger Flash, mehr ist für solche Anwendungen sicher immer gut... Aber SD über SDIO angebunden liefert auch schnell die Daten, in Verbindung mit dem PSRAM kann man da sicher auch schöne Animationen machen. Auf dem runden Display läuft bei mir eine Uhr, habe ich aus einem lvgl code auf den F407 umgebaut. Die Zeiger sind Images die im Winkel rotiert gezeichnet werden. Das wird so von lvgl unterstützt und ist damit recht einfach.
:
Bearbeitet durch User
J. S. schrieb: > Die Images kann man auch aus dem Flash holen, lvgl hat einen Generator > um die Grafik in ein Bytearray zu packen. > Die ESP gibt es ja mit PSRAM und mehr oder weniger Flash, mehr ist für > solche Anwendungen sicher immer gut... Aber SD über SDIO angebunden > liefert auch schnell die Daten, in Verbindung mit dem PSRAM kann man da > sicher auch schöne Animationen machen. > > Auf dem runden Display läuft bei mir eine Uhr, habe ich aus einem lvgl > code auf den F407 umgebaut. Die Zeiger sind Images die im Winkel rotiert > gezeichnet werden. Das wird so von lvgl unterstützt und ist damit recht > einfach. Verwendest du dafür Arduino IDE oder die IDE von Esspresif?
Edwin N. schrieb: > Verwendest du dafür Arduino IDE oder die IDE von Esspresif? weder noch, das war für den STM32F407 mit Mbed und lvgl. Die Images für die Uhr habe ich hierher https://github.com/pr200sd/demo_lvgl/tree/master und das ist ein ESP Projekt, sieht nach IDF aus. Der Code für die laufende Uhr war da nicht vollständig, aber man sieht wie die Zeiger gezeichnet werden sollten. Mit ESP habe ich noch nicht soviel gemacht, aber schon Projekte mit PlatformIO oder IDF in VisualStudio Code kompiliert. Für den Einstieg mit ESP32 und lvgl würde ich aber hier starten: https://github.com/lvgl/lv_port_esp32 Und die lvgl Beispiele in der Doku mit dem micropython Simulator sind gut für Tests am Anfang. Da kann man die Controls und Positionierung mit testen, das API für C ist nahezu identisch und dann nur Schreibarbeit das umzubauen.
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.