LVGL 09 Timer
Zur Navigation springen
Zur Suche springen
| 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