gt911 — 5-punktowy pojemnościowy kontroler dotyku GT911

Moduł gt911 udostępnia sterownik dla projekcyjno-pojemnościowego kontrolera ekranu dotykowego Goodix GT911, często łączonego z panelami LCD 4.3”–7” o rozdzielczości 800x480. Kontroler śledzi do pięciu jednoczesnych punktów dotyku i raportuje każdy jako krotkę (x, y, size, id), gdzie id jest stabilne pomiędzy odczytami tak długo, jak palec pozostaje na panelu.

Sterownik komunikuje się z układem przez I2C i wykorzystuje dwa dodatkowe GPIO:

  • linię reset, utrzymywaną w stanie niskim podczas włączania zasilania i przełączaną razem z linią IRQ w celu wyboru 7-bitowego adresu I2C układu GT911 (0x5D, gdy IRQ jest niskie podczas resetu, 0x14, gdy IRQ jest wysokie);

  • linię przerwania, ustawianą przez kontroler, gdy wystąpi zdarzenie dotyku.

Po utworzeniu obiektu aplikacje mogą odpytywać o dotyki za pomocą GT911.read_points() lub dostarczyć touch_callback wywoływane na opadającym zboczu pinu IRQ.

class GT911 – 5-punktowy pojemnościowy kontroler dotyku

class gt911.GT911(bus: machine.I2C, reset_pin: int | str, irq_pin: int | str, address: int = _DEFAULT_ADDR, width: int = 800, height: int = 480, touch_points: int = 1, reverse_x: bool = False, reverse_y: bool = False, reverse_axis: bool = True, sito: bool = True, refresh_rate: int = 240, touch_callback: Callable | None = None)

Tworzy obiekt kontrolera ekranu dotykowego GT911.

bus to obiekt magistrali machine.I2C, do której podłączony jest GT911.

reset_pin to numer lub nazwa pinu (nie obiekt Pin) podłączonego do linii reset GT911. Sterownik musi zmieniać kierunek pinu podczas resetu.

irq_pin to numer lub nazwa pinu (nie obiekt Pin) podłączonego do linii przerwania GT911. Sterownik musi zmieniać kierunek pinu podczas resetu.

address to adres I2C kontrolera. Domyślnie gt911._DEFAULT_ADDR.

width to rozdzielczość panelu dotykowego wzdłuż osi X w pikselach.

height to rozdzielczość panelu dotykowego wzdłuż osi Y w pikselach.

touch_points to maksymalna liczba jednoczesnych punktów dotyku do raportowania (od 1 do 5).

reverse_x jeśli True, odwraca oś X.

reverse_y jeśli True, odwraca oś Y.

reverse_axis jeśli True, zamienia osie X i Y.

sito włącza tryb Single-Input-Touch-Output kontrolera, gdy True.

refresh_rate to częstotliwość raportowania dotyku w Hz.

touch_callback to opcjonalny obiekt wywoływalny uruchamiany na opadającym zboczu pinu IRQ, gdy wystąpi zdarzenie dotyku. Przekaż None, aby użyć trybu odpytywania.

read_id() bytes

Zwraca 4 bajty zawierające identyfikator produktu GT911.

read_points() tuple

Zwraca krotkę (n, points), gdzie n to liczba aktywnych punktów dotyku, a points to lista 5 wpisów array("H", ...). Każdy wpis zawiera [x, y, size, id]: x i y to współrzędne ekranowe, size to nacisk dotyku, a id to unikalny identyfikator śledzenia, który pozostaje stabilny dla danego palca pomiędzy odczytami.

Tylko pierwsze n wpisów points zawiera prawidłowe dane.

reset() None

Resetuje kontroler GT911 i ponownie uzbraja procedurę obsługi IRQ, jeśli dostarczono touch_callback.

Stałe

gt911._DEFAULT_ADDR: int

Domyślny adres I2C (0x5D) kontrolera GT911.