LVGL 09 Timer

Aus Micropython
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