Kapitel 17 – LVGL mit Hardware (ESP32 / Pico)
Zur Navigation springen
Zur Suche springen
| LVGL 9 mit MicroPython | |
|---|---|
| Kapitel | 17 |
| Titel | LVGL mit Hardware (ESP32 / Pico) |
| Voraussetzungen | Grundkenntnisse in MicroPython |
| Getestet mit | LVGL 9.x |
| Schwierigkeitsgrad | ★★★★☆ |
| Benötigte Zeit | 60 Minuten |
| Status | in Arbeit |
Kapitel 17 – LVGL mit Hardware (ESP32 / Pico)[Bearbeiten | Quelltext bearbeiten]
Lernziel[Bearbeiten | Quelltext bearbeiten]
Nach diesem Kapitel kannst du
- LVGL mit echten Sensoren verbinden,
- Daten aus MicroPython in die UI bringen,
- typische ESP32/Pico-Anwendungen strukturieren,
- UI und Hardware sauber trennen.
Grundidee[Bearbeiten | Quelltext bearbeiten]
LVGL kümmert sich nur um die Anzeige.
Die Hardware liefert die Daten.
Beispiel:
- Sensor → Temperatur
- IMU → Bewegung
- WLAN → Status
- GPIO → Schalter
LVGL zeigt diese Daten nur an.
Architektur[Bearbeiten | Quelltext bearbeiten]
Typisches Prinzip:
- Hardware-Schicht (Sensoren, WLAN)
- Logik-Schicht (Python Code)
- UI-Schicht (LVGL)
Beispiel: einfacher Sensorwert[Bearbeiten | Quelltext bearbeiten]
Angenommen ein Sensor liefert einen Wert:
value = 23.7Anzeige in LVGL[Bearbeiten | Quelltext bearbeiten]
import lvgl as lv
scr = lv.screen_active()
label = lv.label(scr)
label.center()Update-Funktion[Bearbeiten | Quelltext bearbeiten]
def update():
value = read_sensor()
label.set_text(f"{value:.1f} °C")Timer für Live-Daten[Bearbeiten | Quelltext bearbeiten]
def tick(t):
value = read_sensor()
label.set_text(f"{value:.1f} °C")
lv.timer_create(tick, 1000, None)Hardware-Funktion (Platzhalter)[Bearbeiten | Quelltext bearbeiten]
def read_sensor():
return 20 + (lv.rand() % 100) / 10Prinzip[Bearbeiten | Quelltext bearbeiten]
LVGL kennt keine Sensoren.
Du musst die Daten selbst liefern.
Wichtig für ESP32 / Pico[Bearbeiten | Quelltext bearbeiten]
Typische Datenquellen:
- I2C Sensoren
- SPI Geräte
- ADC Eingänge
- GPIO Zustände
- WLAN / ESP-NOW Daten
Beispiel: GPIO Status[Bearbeiten | Quelltext bearbeiten]
def read_gpio():
return pin.value()Anzeige eines Schalters[Bearbeiten | Quelltext bearbeiten]
def update(t):
if pin.value():
label.set_text("EIN")
else:
label.set_text("AUS")Typischer Fehler[Bearbeiten | Quelltext bearbeiten]
Achtung
Viele versuchen Sensorlogik direkt in LVGL-Callbacks zu schreiben.
Besser ist:
Hardware → Funktion → UI Update
Best Practice[Bearbeiten | Quelltext bearbeiten]
Hinweis
Trenne immer:
- Hardware-Zugriff
- Datenverarbeitung
- UI Darstellung
Beispiel Struktur[Bearbeiten | Quelltext bearbeiten]
def read_data():
return sensor.read()
def process_data(v):
return v * 1.1
def update_ui(v):
label.set_text(str(v))Merke[Bearbeiten | Quelltext bearbeiten]
Merke
LVGL zeigt nur Daten an – es erzeugt keine Daten.
Zusammenfassung[Bearbeiten | Quelltext bearbeiten]
- LVGL = Anzeige
- Hardware = Datenquelle
- Timer verbindet beides
- Saubere Trennung ist wichtig für stabile Projekte