gt911 — 5-точечный ёмкостный сенсорный контроллер GT911

Модуль gt911 предоставляет драйвер для проекционно-ёмкостного сенсорного контроллера Goodix GT911, часто используемого в паре с LCD-панелями 4.3»–7» 800x480. Контроллер отслеживает до пяти одновременных точек касания и сообщает о каждой как о кортеже (x, y, size, id), где id стабилен между чтениями, пока палец остаётся на панели.

Драйвер взаимодействует с микросхемой по I2C и использует два дополнительных GPIO:

  • линию сброса, удерживаемую в низком уровне при включении питания и переключаемую вместе с линией IRQ для выбора 7-битного I2C-адреса GT911 (0x5D, когда IRQ в низком уровне во время сброса, 0x14, когда IRQ в высоком уровне);

  • линию прерывания, активируемую контроллером при возникновении события касания.

После создания приложения могут опрашивать касания с помощью GT911.read_points() или предоставить touch_callback для вызова по спадающему фронту на выводе IRQ.

class GT911 – 5-точечный ёмкостный сенсорный контроллер

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)

Создаёт объект контроллера сенсорного экрана GT911.

bus – это объект шины machine.I2C, к которой подключён GT911.

reset_pin – это номер или имя вывода (не объект Pin), подключённого к линии сброса GT911. Драйверу необходимо менять направление вывода во время сброса.

irq_pin – это номер или имя вывода (не объект Pin), подключённого к линии прерывания GT911. Драйверу необходимо менять направление вывода во время сброса.

address – это I2C-адрес контроллера. По умолчанию gt911._DEFAULT_ADDR.

width – это разрешение сенсорной панели по оси X в пикселях.

height – это разрешение сенсорной панели по оси Y в пикселях.

touch_points – это максимальное число одновременных точек касания для отчёта (от 1 до 5).

reverse_x если True, переворачивает ось X.

reverse_y если True, переворачивает ось Y.

reverse_axis если True, меняет местами оси X и Y.

sito включает режим Single-Input-Touch-Output контроллера при значении True.

refresh_rate – это частота отчётов о касаниях в Гц.

touch_callback – это необязательный вызываемый объект, вызываемый по спадающему фронту вывода IRQ при возникновении события касания. Передайте None для использования режима опроса.

read_id() bytes

Возвращает 4 байта, содержащие идентификатор продукта GT911.

read_points() tuple

Возвращает кортеж (n, points), где n – число активных точек касания, а points – список из 5 записей array("H", ...). Каждая запись содержит [x, y, size, id]: x и y – координаты на экране, size – давление касания, а id – уникальный идентификатор отслеживания, остающийся стабильным для данного пальца между чтениями.

Только первые n записей points содержат корректные данные.

reset() None

Сбрасывает контроллер GT911 и повторно активирует обработчик IRQ, если был предоставлен touch_callback.

Константы

gt911._DEFAULT_ADDR: int

I2C-адрес по умолчанию (0x5D) контроллера GT911.