![]() |
|
|
#1 |
|
Старший Пользователь
![]() Регистрация: 21.05.2015
Возраст: 65
Город: Челябинск
Регион: 74
Сообщений: 409
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Попала в руки панель, подобная этой с 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. |
|
|
|
|
|
#2 |
|
Старший Пользователь
![]() Регистрация: 21.05.2015
Возраст: 65
Город: Челябинск
Регион: 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 |
|
|
|
|
|
#3 |
|
Пользователь
![]() Регистрация: 09.06.2015
Возраст: 38
Город: Vrn
Регион: 36
Машина: Opel Astra H
Сообщений: 60
![]() |
Как работает по сравнению с Юриным контроллером?
|
|
|
|
|
|
#4 | |
|
Пользователь
![]() Регистрация: 09.06.2015
Возраст: 38
Город: Vrn
Регион: 36
Машина: Opel Astra H
Сообщений: 60
![]() |
Цитата:
|
|
|
|
|
|
|
#5 |
|
Старший Пользователь
![]() Регистрация: 21.05.2015
Возраст: 65
Город: Челябинск
Регион: 74
Сообщений: 409
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
По умолчанию в андроиде реакция на кнопки задается файлом /system/usr/keylayout/Generic.kl. В разных прошивках эти файлы могут отличаться. Поэтому надо или проверять работу кнопок для каждой конкретной прошивки, или создавать файл .kl для своего устройства.
Реагирует на боковые кнопки ![]() |
|
|
|
|
|
#6 | |
|
Пользователь
![]() Регистрация: 09.06.2015
Возраст: 38
Город: Vrn
Регион: 36
Машина: Opel Astra H
Сообщений: 60
![]() |
Цитата:
|
|
|
|
|
|
|
#7 |
|
Пользователь
![]() Регистрация: 09.06.2015
Возраст: 38
Город: Vrn
Регион: 36
Машина: Opel Astra H
Сообщений: 60
![]() |
|
|
|
|
|
|
#8 |
|
Старший Пользователь
![]() Регистрация: 21.05.2015
Возраст: 65
Город: Челябинск
Регион: 74
Сообщений: 409
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
delay использовать нельзя, это замедлит работу. В последнем скетче я использовал функции Keyboard.press и Keyboard.release. В этом случае скорость повторения определяется не устройством, а операционной системой. Если получается очень быстро, то можно посылать одиночные нажатия на кнопки через Keyboard.write, самостоятельно запрограммировав частоту повторения.
|
|
|
|
|
|
#9 | |
|
Пользователь
![]() Регистрация: 01.11.2017
Возраст: 51
Город: Лобня
Регион: 50, 90, 150
Машина: BMW 530D Touring
Сообщений: 96
![]() ![]() ![]() |
Цитата:
Подскажите, пожалуйста, что не так делаю? Пробую компилить оба скетча - и в обоих случаях получаю ошибку. Библиотеки скачал/подключил... Куда копать? Спасибо за ответ, с уважением |
|
|
|
|
|
|
#10 |
|
Старший Пользователь
![]() Регистрация: 21.05.2015
Возраст: 65
Город: Челябинск
Регион: 74
Сообщений: 409
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Добрый день,
судя по картинке, не подключена библиотека HID. |
|
|
|
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
| Опции темы | Поиск в этой теме |
|
|