gt911 — Controler de atingere capacitiv cu 5 puncte GT911

Modulul gt911 oferă un driver pentru controlerul de ecran tactil cu capacitate proiectată Goodix GT911, o asociere obișnuită cu panourile LCD 800x480 de 4,3”–7”. Controlerul urmărește până la cinci puncte de atingere simultane și raportează fiecare ca un tuplu (x, y, size, id), unde id rămâne stabil între citiri atâta timp cât degetul rămâne pe panou.

Driverul comunică cu cipul prin I2C și utilizează două GPIO-uri suplimentare:

  • o linie de reset, menținută la nivel scăzut în timpul pornirii și comutată împreună cu linia IRQ pentru a selecta adresa I2C pe 7 biți a GT911 (0x5D când IRQ este la nivel scăzut în timpul resetării, 0x14 când IRQ este la nivel ridicat);

  • o linie de întrerupere, activată de controler atunci când are loc un eveniment de atingere.

După construcție, aplicațiile pot interoga atingerile cu GT911.read_points() sau pot furniza un touch_callback care să fie apelat pe frontul descrescător al pinului IRQ.

class GT911 – Controler de atingere capacitiv cu 5 puncte

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)

Creează un obiect controler de ecran tactil GT911.

bus este obiectul magistralei machine.I2C la care este atașat GT911.

reset_pin este numărul sau numele pinului (nu un obiect Pin) conectat la linia de reset a GT911. Driverul are nevoie să schimbe direcția pinului în timpul resetării.

irq_pin este numărul sau numele pinului (nu un obiect Pin) conectat la linia de întrerupere a GT911. Driverul are nevoie să schimbe direcția pinului în timpul resetării.

address este adresa I2C a controlerului. Implicit este gt911._DEFAULT_ADDR.

width este rezoluția panoului tactil pe axa X în pixeli.

height este rezoluția panoului tactil pe axa Y în pixeli.

touch_points este numărul maxim de puncte de atingere simultane care vor fi raportate (1 până la 5).

reverse_x dacă este True, inversează axa X.

reverse_y dacă este True, inversează axa Y.

reverse_axis dacă este True, schimbă axele X și Y între ele.

sito activează modul Single-Input-Touch-Output al controlerului atunci când este True.

refresh_rate este rata de raportare a atingerilor în Hz.

touch_callback este un obiect apelabil opțional invocat pe frontul descrescător al pinului IRQ atunci când are loc un eveniment de atingere. Transmiteți None pentru a folosi modul de interogare.

read_id() bytes

Returnează 4 octeți care conțin ID-ul de produs al GT911.

read_points() tuple

Returnează un tuplu (n, points) unde n este numărul de puncte de atingere active, iar points este o listă de 5 intrări array("H", ...). Fiecare intrare conține [x, y, size, id]: x și y sunt coordonatele pe ecran, size este presiunea de atingere, iar id este un ID de urmărire unic care rămâne stabil pentru un anumit deget între citiri.

Doar primele n intrări din points conțin date valide.

reset() None

Resetează controlerul GT911 și reactivează gestionarul IRQ dacă a fost furnizat un touch_callback.

Constante

gt911._DEFAULT_ADDR: int

Adresa I2C implicită (0x5D) a controlerului GT911.