LVGL 09 Timer: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Die Seite wurde neu angelegt: „{{LVGLKapitel |Kapitel=9 |Titel=Timer und periodische Updates |Level=★★★☆☆ |Zeit=45 Minuten }} = Kapitel 14 – Timer und periodische Updates = == Lernziel == Nach diesem Kapitel kannst du * Timer in LVGL verwenden, * periodische Aufgaben ausführen, * UI regelmäßig aktualisieren, * einfache Live-Anzeigen bauen. == Warum Timer? == Viele Anwendungen benötigen regelmäßige Updates: * Uhrzeit anzeigen * Sensorwerte aktualisieren * Animat…“ |
|||
| Zeile 6: | Zeile 6: | ||
}} | }} | ||
= Kapitel | = Kapitel 09 – Timer und periodische Updates = | ||
== Lernziel == | == Lernziel == | ||
Aktuelle Version vom 30. Juli 2026, 18:07 Uhr
| LVGL 9 mit MicroPython | |
|---|---|
| Kapitel | 9 |
| Titel | Timer und periodische Updates |
| Voraussetzungen | Grundkenntnisse in MicroPython |
| Getestet mit | LVGL 9.x |
| Schwierigkeitsgrad | ★★★☆☆ |
| Benötigte Zeit | 45 Minuten |
| Status | in Arbeit |
Kapitel 09 – Timer und periodische Updates[Bearbeiten | Quelltext bearbeiten]
Lernziel[Bearbeiten | Quelltext bearbeiten]
Nach diesem Kapitel kannst du
- Timer in LVGL verwenden,
- periodische Aufgaben ausführen,
- UI regelmäßig aktualisieren,
- einfache Live-Anzeigen bauen.
Warum Timer?[Bearbeiten | Quelltext bearbeiten]
Viele Anwendungen benötigen regelmäßige Updates:
- Uhrzeit anzeigen
- Sensorwerte aktualisieren
- Animationen steuern
- Statusanzeigen aktualisieren
LVGL bietet dafür Timer.
Was ist ein Timer?[Bearbeiten | Quelltext bearbeiten]
Ein Timer ruft eine Funktion in festen Zeitabständen auf.
Beispiel: alle 1000 ms (1 Sekunde)
Einfacher Timer[Bearbeiten | Quelltext bearbeiten]
import lvgl as lv
def update_cb(t):
print("Update")
lv.timer_create(update_cb, 1000, None)Erklärung[Bearbeiten | Quelltext bearbeiten]
- update_cb → Funktion, die aufgerufen wird
- 1000 → Intervall in Millisekunden
- None → benutzerdefinierte Daten (optional)
Timer für UI-Update[Bearbeiten | Quelltext bearbeiten]
import lvgl as lv
scr = lv.screen_active()
label = lv.label(scr)
label.set_text("Start")
label.center()
def update_cb(t):
label.set_text("Aktualisiert")
lv.timer_create(update_cb, 2000, None)Erklärung[Bearbeiten | Quelltext bearbeiten]
Alle 2 Sekunden wird der Text geändert.
Timer mit Zähler[Bearbeiten | Quelltext bearbeiten]
counter = 0
def update_cb(t):
global counter
counter += 1
label.set_text(f"Zähler: {counter}")Typischer Fehler[Bearbeiten | Quelltext bearbeiten]
Achtung
Timer laufen unabhängig vom Hauptprogramm.
Lokale Variablen gehen verloren, wenn sie nicht global oder extern gespeichert werden.
Timer stoppen[Bearbeiten | Quelltext bearbeiten]
Ein Timer kann deaktiviert werden:
t = lv.timer_create(update_cb, 1000, None)
t.pause()Timer wieder starten[Bearbeiten | Quelltext bearbeiten]
t.resume()Anwendung in Projekten[Bearbeiten | Quelltext bearbeiten]
Timer werden häufig verwendet für:
- Sensorabfrage (z. B. IMU, Temperatur)
- ESP32 WLAN Status
- ESP-Now Kommunikation
- Display-Refresh
- Animationen
Beispiel: Live-Uhr (einfach)[Bearbeiten | Quelltext bearbeiten]
import lvgl as lv
import time
scr = lv.screen_active()
label = lv.label(scr)
label.center()
def update_cb(t):
label.set_text(time.strftime("%H:%M:%S"))
lv.timer_create(update_cb, 1000, None)Hinweis[Bearbeiten | Quelltext bearbeiten]
Hinweis
Timer ersetzen keine Echtzeitbetriebssysteme.
Sie sind für einfache periodische Aufgaben gedacht.
Merke[Bearbeiten | Quelltext bearbeiten]
Merke
Timer rufen Funktionen regelmäßig in festen Zeitabständen auf.
Zusammenfassung[Bearbeiten | Quelltext bearbeiten]
- Timer führen Code periodisch aus
- Sie sind ideal für Updates und Sensoren
- Funktionen werden automatisch aufgerufen
- Daten müssen außerhalb der Callback-Funktion gespeichert werden