gt911 — 5-точковий ємнісний сенсорний контролер GT911

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

Драйвер взаємодіє з чіпом через I2C і використовує два додаткові GPIO:

  • лінія скидання (reset), утримувана в низькому рівні під час увімкнення та перемикається разом із лінією IRQ для вибору 7-бітної I2C-адреси GT911 (0x5D якщо IRQ низький під час скидання, 0x14 якщо IRQ високий);

  • лінія переривання (interrupt), яку контролер активує при виникненні події дотику.

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

клас 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.