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