gt911 — Controlador de Toque Capacitivo de 5 Pontos GT911

O módulo gt911 fornece um driver para o controlador de tela de toque capacitiva projetada Goodix GT911, um par comum com painéis LCD 800x480 de 4,3”–7”. O controlador rastreia até cinco pontos de toque simultâneos e reporta cada um como uma tupla (x, y, size, id) onde id permanece estável entre leituras enquanto o dedo permanecer no painel.

O driver se comunica com o chip via I2C e usa dois GPIOs extras:

  • uma linha de reset, mantida em nível baixo durante a inicialização e alternada junto com a linha IRQ para selecionar o endereço I2C de 7 bits do GT911 (0x5D quando IRQ está em nível baixo durante o reset, 0x14 quando IRQ está em nível alto);

  • uma linha de interrupção, acionada pelo controlador quando ocorre um evento de toque.

Após a construção, as aplicações podem consultar toques com GT911.read_points() ou fornecer um touch_callback para ser invocado na borda de descida do pino IRQ.

class GT911 – Controlador de Toque Capacitivo de 5 Pontos

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)

Cria um objeto controlador de tela de toque GT911.

bus é o objeto de barramento machine.I2C ao qual o GT911 está conectado.

reset_pin é o número ou nome do pino (não um objeto Pin) conectado à linha de reset do GT911. O driver precisa alterar a direção do pino durante o reset.

irq_pin é o número ou nome do pino (não um objeto Pin) conectado à linha de interrupção do GT911. O driver precisa alterar a direção do pino durante o reset.

address é o endereço I2C do controlador. O padrão é gt911._DEFAULT_ADDR.

width é a resolução do painel de toque ao longo do eixo X em pixels.

height é a resolução do painel de toque ao longo do eixo Y em pixels.

touch_points é o número máximo de pontos de toque simultâneos a reportar (1 a 5).

reverse_x se True inverte o eixo X.

reverse_y se True inverte o eixo Y.

reverse_axis se True troca os eixos X e Y.

sito habilita o modo Single-Input-Touch-Output do controlador quando True.

refresh_rate é a taxa de reporte de toques em Hz.

touch_callback é um callable opcional invocado na borda de descida do pino IRQ quando ocorre um evento de toque. Passe None para usar o modo de polling.

read_id() bytes

Retorna 4 bytes contendo o ID do produto GT911.

read_points() tuple

Retorna uma tupla (n, points) onde n é o número de pontos de toque ativos e points é uma lista de 5 entradas array("H", ...). Cada entrada contém [x, y, size, id]: x e y são as coordenadas de tela, size é a pressão do toque e id é um ID de rastreamento único que permanece estável para um dado dedo entre leituras.

Apenas as primeiras n entradas de points contêm dados válidos.

reset() None

Reinicia o controlador GT911 e rearma o handler de IRQ se um touch_callback foi fornecido.

Constantes

gt911._DEFAULT_ADDR: int

Endereço I2C padrão (0x5D) do controlador GT911.