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 (
0x5Dcând IRQ este la nivel scăzut în timpul resetării,0x14câ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.
buseste obiectul magistraleimachine.I2Cla care este atașat GT911.reset_pineste numărul sau numele pinului (nu un obiectPin) conectat la linia de reset a GT911. Driverul are nevoie să schimbe direcția pinului în timpul resetării.irq_pineste numărul sau numele pinului (nu un obiectPin) conectat la linia de întrerupere a GT911. Driverul are nevoie să schimbe direcția pinului în timpul resetării.addresseste adresa I2C a controlerului. Implicit estegt911._DEFAULT_ADDR.widtheste rezoluția panoului tactil pe axa X în pixeli.heighteste rezoluția panoului tactil pe axa Y în pixeli.touch_pointseste numărul maxim de puncte de atingere simultane care vor fi raportate (1 până la 5).reverse_xdacă este True, inversează axa X.reverse_ydacă este True, inversează axa Y.reverse_axisdacă este True, schimbă axele X și Y între ele.sitoactivează modul Single-Input-Touch-Output al controlerului atunci când este True.refresh_rateeste rata de raportare a atingerilor în Hz.touch_callbackeste un obiect apelabil opțional invocat pe frontul descrescător al pinului IRQ atunci când are loc un eveniment de atingere. TransmitețiNonepentru a folosi modul de interogare.- read_points() tuple¶
Returnează un tuplu
(n, points)undeneste numărul de puncte de atingere active, iarpointseste o listă de 5 intrăriarray("H", ...). Fiecare intrare conține[x, y, size, id]:xșiysunt coordonatele pe ecran,sizeeste presiunea de atingere, iarideste un ID de urmărire unic care rămâne stabil pentru un anumit deget între citiri.Doar primele
nintrări dinpointsconțin date valide.