gt911 — Controlador táctil capacitivo de 5 puntos GT911

El módulo gt911 proporciona un controlador para el controlador de pantalla táctil capacitiva proyectada Goodix GT911, un emparejamiento común con paneles LCD de 800x480 de 4,3»–7». El controlador rastrea hasta cinco puntos de contacto simultáneos y reporta cada uno como una tupla (x, y, size, id) donde id es estable entre lecturas mientras el dedo permanezca sobre el panel.

El controlador se comunica con el chip mediante I2C y usa dos GPIO adicionales:

  • una línea de reset, mantenida en bajo durante el encendido y conmutada junto con la línea IRQ para seleccionar la dirección I2C de 7 bits del GT911 (0x5D cuando IRQ está en bajo durante el reset, 0x14 cuando IRQ está en alto);

  • una línea de interrupción, activada por el controlador cuando ocurre un evento táctil.

Tras la construcción, las aplicaciones pueden sondear los toques con GT911.read_points() o proporcionar una touch_callback para que se invoque en el flanco de bajada del pin IRQ.

class GT911 – Controlador táctil capacitivo de 5 puntos

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 objeto controlador de pantalla táctil GT911.

bus es el objeto de bus machine.I2C al que está conectado el GT911.

reset_pin es el número o nombre del pin (no un objeto Pin) conectado a la línea de reset del GT911. El controlador necesita cambiar la dirección del pin durante el reset.

irq_pin es el número o nombre del pin (no un objeto Pin) conectado a la línea de interrupción del GT911. El controlador necesita cambiar la dirección del pin durante el reset.

address es la dirección I2C del controlador. De forma predeterminada es gt911._DEFAULT_ADDR.

width es la resolución del panel táctil a lo largo del eje X en píxeles.

height es la resolución del panel táctil a lo largo del eje Y en píxeles.

touch_points es el número máximo de puntos de contacto simultáneos a reportar (1 a 5).

reverse_x si es True voltea el eje X.

reverse_y si es True voltea el eje Y.

reverse_axis si es True intercambia los ejes X e Y.

sito habilita el modo Single-Input-Touch-Output del controlador cuando es True.

refresh_rate es la tasa de reporte táctil en Hz.

touch_callback es un invocable opcional que se ejecuta en el flanco de bajada del pin IRQ cuando ocurre un evento táctil. Pase None para usar el modo de sondeo.

read_id() bytes

Devuelve 4 bytes que contienen el ID de producto del GT911.

read_points() tuple

Devuelve una tupla (n, points) donde n es el número de puntos de contacto activos y points es una lista de 5 entradas array("H", ...). Cada entrada contiene [x, y, size, id]: x e y son las coordenadas de pantalla, size es la presión del toque e id es un ID de seguimiento único que permanece estable para un dedo dado entre lecturas.

Solo las primeras n entradas de points contienen datos válidos.

reset() None

Restablece el controlador GT911 y rearma el manejador de IRQ si se proporcionó una touch_callback.

Constantes

gt911._DEFAULT_ADDR: int

Dirección I2C predeterminada (0x5D) del controlador GT911.