LVGL (Light and Versatile Graphics Library) GUI

Ich möchte hier auch mal was mit Euch teilen.
Auf der suche nach einem GUI für den relativ universellen Einsatz bin ich, über diese GUI gestolpert.

Sie ist Open Source unter MIT-Lizenz und läuft auf so gut wie auf allen allen aktuell üblichen Nodes. Wie die ESP32/ESP8266, den STM32x oder den Raspberry´s.
Sie ist in C Geschrieben läuft aber auch unter MicroPython. Ob sie auch in der Pycom-Blase läuft habe ich aktuell noch nicht rausgefunden.

Sie ist hauptsächlich für Touchscreens ausgelegt, kann aber auch mit Tasten Encodern oder anderem gesteuert werden.
Unter MicroPython gibt es sogar ein paar Beispiele wo ein Remote View/Control über einen Webserver gezeigt werden, was eine gemeinsame UI für Web und Display möglich scheinen lässt.

Auf alle Fälle eine Interessante Library, die auch von Adafruit unterstützt wird. Die damit erzeugten Oberflächen wirken Hochwertig und laufen erstaunlich flüssig.

Meine ersten Gehversuche unter Arduino, laufen aber momentan aber doch etwas arg holprig, die Library entwickelt sich schneller als der Arduino Zweig folgen kann. Für Arduino wird eine kleine Zusatz-Library benötigt lv_arduino oder Adafruit_LvGL_Glue. Das war auf alle fälle bis V7 der Library so. Bei V8 gibt es eine LVGL_Arduino.ino die ich aber noch nicht zum laufen bekommen habe.
Da schlummern wie selbst in V7, noch so einige Bugs unter der Haube.

Die Simulatoren, die ein Schnelleres Entwickeln ermöglichen sollen, habe ich bisher unter WIN10 mit Visual Studio2019 und Visual Studio Code zum laufen bekommen. Sie sind ein nettes Spielzeug, es muss aber trotzdem “normal” compiled werden. Die Zeitersparnis bezieht sich daher nur auf das “nicht`” Hochladen. Eine Garantie das Das auf deinem Bildschirm angezeigte auch später auf dem Display erscheint gibt es auch nicht. Erst recht nicht im Arduino Universum.

Es gibt sogar, eine Hand voll, Editoren mit graphischer Oberfläche die aber auf meinem PC entweder gar nicht zur Mitarbeit zu bewegen sind, oder ständig abstürzen.

Mit meinem, zugegebener maßen, doch arg begrenzten Programmierkenntnissen in C/C++ werde ich mich mal versuchen weiter ran zu tasten.
Sie ist auf alle fälle für den Hanimandl und dem hiveeyes-epaper-display interessant. Mit “Remote view” evtl. sogar für den
terkin-datalogger.

2 Likes

Wir hatten beim HaniMandl unter SPI Display -- am Ende gar mit Touch? schon einmal über LVGL als grafische Benutzerschnittstelle gesprochen. Nun habe ich mich nochmals kurz damit beschäftigt, da Arduino jetzt (2023/10) mit dem GIGA Display Shield ein (recht teures, 70 EUR) touch-Display im Angebot hat das auch programmiert werden muss. Das Arduino touch-Display unterstützt für “einfachere” Anforderungen die Adafruit-GFX-Library und für komplexere Ansprüche auch die LVGL, was mich etwas wunderte, da ich sie damal als recht komplex einschätzte.

Man kann die LVGL über C oder MicroPython nutzen, wie schon Michael oben geschrieben hat. Die Beispiele unter Examples — LVGL documentation schauen gut strukturiert aus, wenn auch die Beispiel-UIs in der Seite sehr langsam laden, da ist etwas Geduld nötig. Was aber sehr cool ist: Es gibt ein Online-LVGL/MicroPython Simulator, leider nur für MicroPython, nicht für C. Damit könnte der Einstieg deutlich einfacher sein, ohne sich erst den Simulator on PC — LVGL documentation installieren zu müssen, zumindest wenn MicroPython die Sprachwahl ist.

Oder die Alternative vom Chinesen. Das Arduino Board hat knapp 4". Das hier gibt es von 2,8" bis 7", touch & non-touch mit ESP32 von 10 - 55 €.

1 Like