gt911 — Controller di tocco capacitivo a 5 punti GT911

Il modulo gt911 fornisce un driver per il controller di touchscreen capacitivo proiettato Goodix GT911, un abbinamento comune con pannelli LCD 800x480 da 4,3»–7». Il controller traccia fino a cinque punti di tocco simultanei e riporta ciascuno come una tupla (x, y, size, id) dove id rimane stabile attraverso le letture finché il dito rimane sul pannello.

Il driver comunica con il chip tramite I2C e usa due GPIO aggiuntivi:

  • una linea di reset, tenuta bassa durante l’accensione e commutata insieme alla linea IRQ per selezionare l’indirizzo I2C a 7 bit del GT911 (0x5D quando IRQ è basso durante il reset, 0x14 quando IRQ è alto);

  • una linea di interrupt, asserita dal controller quando si verifica un evento di tocco.

Dopo la costruzione, le applicazioni possono effettuare il polling dei tocchi con GT911.read_points() oppure fornire una touch_callback da invocare sul fronte di discesa del pin IRQ.

class GT911 – Controller di tocco capacitivo a 5 punti

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)

Crea un oggetto controller del touch screen GT911.

bus è l’oggetto bus machine.I2C a cui è collegato il GT911.

reset_pin è il numero o il nome del pin (non un oggetto Pin) collegato alla linea di reset del GT911. Il driver deve cambiare la direzione del pin durante il reset.

irq_pin è il numero o il nome del pin (non un oggetto Pin) collegato alla linea di interrupt del GT911. Il driver deve cambiare la direzione del pin durante il reset.

address è l’indirizzo I2C del controller. Per impostazione predefinita è gt911._DEFAULT_ADDR.

width è la risoluzione del pannello tattile lungo l’asse X in pixel.

height è la risoluzione del pannello tattile lungo l’asse Y in pixel.

touch_points è il numero massimo di punti di tocco simultanei da riportare (da 1 a 5).

reverse_x se True inverte l’asse X.

reverse_y se True inverte l’asse Y.

reverse_axis se True scambia gli assi X e Y.

sito abilita la modalità Single-Input-Touch-Output del controller quando è True.

refresh_rate è la frequenza di report dei tocchi in Hz.

touch_callback è un callable opzionale invocato sul fronte di discesa del pin IRQ quando si verifica un evento di tocco. Passa None per usare la modalità polling.

read_id() bytes

Restituisce 4 byte contenenti l’ID prodotto del GT911.

read_points() tuple

Restituisce una tupla (n, points) dove n è il numero di punti di tocco attivi e points è una lista di 5 voci array("H", ...). Ciascuna voce contiene [x, y, size, id]: x e y sono le coordinate sullo schermo, size è la pressione del tocco e id è un ID di tracciamento univoco che rimane stabile per un dato dito attraverso le letture.

Solo le prime n voci di points contengono dati validi.

reset() None

Resetta il controller GT911 e riarma il gestore IRQ se è stata fornita una touch_callback.

Costanti

gt911._DEFAULT_ADDR: int

Indirizzo I2C predefinito (0x5D) del controller GT911.