gt911 — Controlador Tátil Capacitivo GT911 de 5 Pontos

O módulo gt911 fornece um driver para o controlador de ecrã tátil capacitivo projetado Goodix GT911, uma combinação comum com painéis LCD 800x480 de 4,3»–7». O controlador acompanha até cinco pontos de toque simultâneos e reporta cada um como um tuplo (x, y, size, id) onde id é estável entre leituras enquanto o dedo permanecer no painel.

O driver comunica com o chip via I2C e utiliza dois GPIOs adicionais:

  • uma linha de reset, mantida em nível baixo durante o arranque e comutada em conjunto 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, ativada pelo controlador quando ocorre um evento de toque.

Após a construção, as aplicações podem verificar toques com GT911.read_points() ou fornecer um touch_callback para ser invocado no flanco descendente do pino IRQ.

classe GT911 – Controlador Tátil 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 ecrã tátil GT911.

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

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

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

address é o endereço I2C do controlador. Por omissão é gt911._DEFAULT_ADDR.

width é a resolução do painel tátil ao longo do eixo X em pixels.

height é a resolução do painel tátil 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 ativa o modo Single-Input-Touch-Output do controlador quando True.

refresh_rate é a taxa de reporte de toque em Hz.

touch_callback é um callable opcional invocado no flanco descendente do pino IRQ quando ocorre um evento de toque. Passe None para usar o modo de polling.

read_id() bytes

Devolve 4 bytes contendo o ID de produto do GT911.

read_points() tuple

Devolve um tuplo (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 no ecrã, size é a pressão do toque e id é um ID de rastreio ú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 IRQ se tiver sido fornecido um touch_callback.

Constantes

gt911._DEFAULT_ADDR: int

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