PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Тачскрины (http://pccar.ru/forumdisplay.php?f=138)
-   -   Контроллер панели на GT911 с боковыми кнопками на Arduino (http://pccar.ru/showthread.php?t=29682)

ABCh 18.08.2021 10:21

Контроллер панели на GT911 с боковыми кнопками на Arduino
 
Вложений: 1
Попала в руки панель, подобная этой с 4-мя боковыми кнопками. (Привет ymka-66 :bye:) Поскольку мой вопрос остался без ответа, пришлось делать своими силами. Изучив решение, попытался повторить его в виде Arduino-проекта, дополнительно задействовав боковые сенсорные кнопки. Начал с установки библиотеки и развертывания имеющегося в ней примера GT911_avr_touch.ino. Подключив панель и запустив программу, увидел, что при касании экрана координата X изменяется от 0 до 1023 при движении справа налево. При касании в области кнопок координата X меняется от 1024 до 1055. Координата Y меняется от 0 до 599 сверху вниз в зоне экрана и от 0 до 390 в зоне кнопок. С панелью оказалось все просто и понятно.
С передачей информации в компьютер тоже нашлось подходящее решении в виде форка библиотеки NicoHood/HID, в который была включена поддержка сенсорных экранов. Первый вариант программы прилагается.
Продолжение следует...

ABCh 18.08.2021 21:23

Вложений: 1
Панель подключаем по схемам, соответствующим используемому устройству, и убеждаемся в наличии реакции на касание экрана и нажатие кнопок.
Далее нужно масштабировать значения координат в соответствии с описанием функции
Код:

/**
        * 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

Кнопку POWER можно также использовать для подачи сигнала на плату компьютера через выход ардуино.

DizzJK 19.08.2021 16:53

Как работает по сравнению с Юриным контроллером?

DizzJK 19.08.2021 17:55

Цитата:

Сообщение от ABCh (Сообщение 417967)
Панель подключаем по схемам, соответствующим используемому устройству, и убеждаемся в наличии реакции на касание экрана и нажатие кнопок.
Далее нужно масштабировать значения координат в соответствии с описанием функции
Код:

/**
        * 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

Кнопку POWER можно также использовать для подачи сигнала на плату компьютера через выход ардуино.

А разве андройд не подхватывает ММ кнопки? Просто когда на ардуине делал контроллер резистивных кнопок, они прекрасно работали как на андройде, так и в винде

ABCh 20.08.2021 08:15

По умолчанию в андроиде реакция на кнопки задается файлом /system/usr/keylayout/Generic.kl. В разных прошивках эти файлы могут отличаться. Поэтому надо или проверять работу кнопок для каждой конкретной прошивки, или создавать файл .kl для своего устройства.
Цитата:

Сообщение от DizzJK (Сообщение 417968)
Как работает по сравнению с Юриным контроллером?

Реагирует на боковые кнопки :)

DizzJK 30.08.2021 21:39

Цитата:

Сообщение от ABCh (Сообщение 417971)
По умолчанию в андроиде реакция на кнопки задается файлом /system/usr/keylayout/Generic.kl. В разных прошивках эти файлы могут отличаться. Поэтому надо или проверять работу кнопок для каждой конкретной прошивки, или создавать файл .kl для своего устройства.

Реагирует на боковые кнопки :)

В общем тач работает отлично! Спасибо большое за поддержку!

DizzJK 03.09.2021 10:34

Цитата:

Сообщение от ABCh (Сообщение 417971)
Реагирует на боковые кнопки :)

Вопрос про боковые кнопки, как их замедлить при нажатии, а то при нажатии mute она меняет свое положение раз 10, какую команду знаю (delay) замедляет все кнопки

ABCh 03.09.2021 11:11

delay использовать нельзя, это замедлит работу. В последнем скетче я использовал функции Keyboard.press и Keyboard.release. В этом случае скорость повторения определяется не устройством, а операционной системой. Если получается очень быстро, то можно посылать одиночные нажатия на кнопки через Keyboard.write, самостоятельно запрограммировав частоту повторения.

Alex15BV 28.03.2022 17:42

Вложений: 1
Цитата:

Сообщение от ABCh (Сообщение 417965)
Попала в руки панель, подобная этой с 4-мя боковыми кнопками. (Привет ymka-66 :bye:) Поскольку мой вопрос остался без ответа, пришлось делать своими силами.

Добрый день.
Подскажите, пожалуйста, что не так делаю? Пробую компилить оба скетча - и в обоих случаях получаю ошибку. Библиотеки скачал/подключил... Куда копать? Спасибо за ответ, с уважением

ABCh 28.03.2022 19:30

Добрый день,
судя по картинке, не подключена библиотека HID.


Часовой пояс GMT +4, время: 23:11.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot