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