18.08.2021, 10:21 | #1 |
Старший Пользователь
Регистрация: 21.05.2015
Возраст: 64
Город: Челябинск
Регион: 74
Сообщений: 409
|
Контроллер панели на GT911 с боковыми кнопками на Arduino
Попала в руки панель, подобная этой с 4-мя боковыми кнопками. (Привет ymka-66 ) Поскольку мой вопрос остался без ответа, пришлось делать своими силами. Изучив решение, попытался повторить его в виде Arduino-проекта, дополнительно задействовав боковые сенсорные кнопки. Начал с установки библиотеки и развертывания имеющегося в ней примера GT911_avr_touch.ino. Подключив панель и запустив программу, увидел, что при касании экрана координата X изменяется от 0 до 1023 при движении справа налево. При касании в области кнопок координата X меняется от 1024 до 1055. Координата Y меняется от 0 до 599 сверху вниз в зоне экрана и от 0 до 390 в зоне кнопок. С панелью оказалось все просто и понятно.
С передачей информации в компьютер тоже нашлось подходящее решении в виде форка библиотеки NicoHood/HID, в который была включена поддержка сенсорных экранов. Первый вариант программы прилагается. Продолжение следует... Последний раз редактировалось admin; 09.10.2021 в 20:57. |
18.08.2021, 21:23 | #2 |
Старший Пользователь
Регистрация: 21.05.2015
Возраст: 64
Город: Челябинск
Регион: 74
Сообщений: 409
|
Панель подключаем по схемам, соответствующим используемому устройству, и убеждаемся в наличии реакции на касание экрана и нажатие кнопок.
Далее нужно масштабировать значения координат в соответствии с описанием функции Код:
/** * Set contact status for a finger in the internal data structure. You must * call send manually after setting all fingers to flush them through USB. * * @param id Finger id. Must be in the range of 0-MAXFINGERS. Same finger * must have same id throughout contact. Allocations does not need * to be continuous. * @param x, y Coordinates. Range 0-10000. (0,0) is top-left on Windows. * @param pressure Contact pressure. Range 0-127. When set to 0, the touch * is reported as hovering (in-range) * @return 1 if success. 0 if id is out-of-bounds */ inline int setFinger(uint8_t id, uint16_t x, uint16_t y, uint8_t pressure=100); Остается разобраться с программированием кнопок. Подробная инструкция для андроида здесь. В моем примере кнопки кодируются в буквы a,b,c,d,e, которые затем в андроиде перекодируются в кнопки POWER, HOME, BACK, VOLUME_DOWN, VOLUME_UP с помощью файла Vendor_2341_Product_8036.kl Код:
key 30 POWER key 48 HOME key 46 BACK key 32 VOLUME_DOWN key 18 VOLUME_UP |
19.08.2021, 16:53 | #3 |
Пользователь
Регистрация: 09.06.2015
Возраст: 38
Город: Vrn
Регион: 36
Машина: Opel Astra H
Сообщений: 60
|
Как работает по сравнению с Юриным контроллером?
|
19.08.2021, 17:55 | #4 | |
Пользователь
Регистрация: 09.06.2015
Возраст: 38
Город: Vrn
Регион: 36
Машина: Opel Astra H
Сообщений: 60
|
Цитата:
|
|
20.08.2021, 08:15 | #5 |
Старший Пользователь
Регистрация: 21.05.2015
Возраст: 64
Город: Челябинск
Регион: 74
Сообщений: 409
|
По умолчанию в андроиде реакция на кнопки задается файлом /system/usr/keylayout/Generic.kl. В разных прошивках эти файлы могут отличаться. Поэтому надо или проверять работу кнопок для каждой конкретной прошивки, или создавать файл .kl для своего устройства.
Реагирует на боковые кнопки |
30.08.2021, 21:39 | #6 | |
Пользователь
Регистрация: 09.06.2015
Возраст: 38
Город: Vrn
Регион: 36
Машина: Opel Astra H
Сообщений: 60
|
Цитата:
|
|
03.09.2021, 10:34 | #7 |
Пользователь
Регистрация: 09.06.2015
Возраст: 38
Город: Vrn
Регион: 36
Машина: Opel Astra H
Сообщений: 60
|
|
03.09.2021, 11:11 | #8 |
Старший Пользователь
Регистрация: 21.05.2015
Возраст: 64
Город: Челябинск
Регион: 74
Сообщений: 409
|
delay использовать нельзя, это замедлит работу. В последнем скетче я использовал функции Keyboard.press и Keyboard.release. В этом случае скорость повторения определяется не устройством, а операционной системой. Если получается очень быстро, то можно посылать одиночные нажатия на кнопки через Keyboard.write, самостоятельно запрограммировав частоту повторения.
|
28.03.2022, 17:42 | #9 | |
Пользователь
Регистрация: 01.11.2017
Возраст: 50
Город: Лобня
Регион: 50, 90, 150
Машина: BMW 530D Touring
Сообщений: 96
|
Цитата:
Подскажите, пожалуйста, что не так делаю? Пробую компилить оба скетча - и в обоих случаях получаю ошибку. Библиотеки скачал/подключил... Куда копать? Спасибо за ответ, с уважением |
|
28.03.2022, 19:30 | #10 |
Старший Пользователь
Регистрация: 21.05.2015
Возраст: 64
Город: Челябинск
Регион: 74
Сообщений: 409
|
Добрый день,
судя по картинке, не подключена библиотека HID. |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|