ARDUINO Эмулятор клавиатуры и мыши

Дмитрий Бойков

✩✩✩✩✩✩✩
9 Дек 2020
18
0
Требуется исполнитель :
в любом городе
Надо изготовить :
Код под следующие комплектующие и ТЗ.
Используемые комплектующие:
Ардуино Leonardo Pro Micro (Mega32U4)
MPU6050/MPU9250 (на выбор)
BMP180
ТЗ:
В коде желательны вкладки с режимами.
1 вкладка=1 режим для упрощения настроек режимов и добавления новых (желательны так же комментарии, что бы можно было понимать какую клавишу на какой пин/кнопку назначается
Используется 14 кнопок, каждая из которых подключена к ардуино Леонардо.
1-а из 14-ти тактовых кнопок отвечает за переключение режимов.
Зажатие на 3 сек = переключение на следующий режим и так по кругу.
Остальные 13 кнопок являются назначаемыми клавишами клавиатуры и выставляются в режимах.
Например:
Режим 1:
Кнопка 1 = "w" на клавиатуре
Режим 2:
Кнопка 1 = "g" на клавиатуре
И т.д.
В коде должна присутствовать защита от дребезга тактовых кнопок.
В коде желательно предусмотреть установку до 6 режимов.
Должен присутствовать барометр или его аналог, с точностью до 2-4см.
Барометр выполняет функцию 2-х клавиш клавиатуры, поэтому в режимах должна присутствовать настройка клавиш и пороговых значений
Например:
Нижний порог в 80см.
(Первая клавиша)
Если датчик опустился ниже 80 то кнопка назначенная в режиме нажимается и не отпускается пока датчик не поднимется выше 80см.
Верхний порог в 100см (вторая клавиша)
Если датчик поднялся выше 100 то кнопка назначенная в режиме нажимается и не отпускается пока датчик не опустится ниже 100см.
Другие схемы реализации, которые могут быть предложены исполнителем так же рассматриваются, так например есть вариант с реализацией через акселерометр.
Роль мышки выполняет гироскоп (отслеживание наклонов верх/вниз) и компас (отслеживание вращения вокруг собственной оси)
Гироскоп:
При наклоне модуля назад, мышка двигается вперёд, курсор ползёт вверх по экрану
При наклоне вперёд, мышка двигается назад, курсор ползёт вниз.
Компас:
Повороты датчика вокруг собственной оси отслеживает компас.
При движении датчика по часовой стрелке мышка двигается вправо, курсор перемещается вправо, при движении против часовой стрелки мышка двигается влево, курсор ползёт влево.
Движение гироскопа ограничено и действует только до 100 градусов относительно горизонтального положения вверх и 100 градусов относительно горизонтального положения вниз (данный параметр желательно сделать регулируемым и внести в настраиваемые режимы)
Движение мишки вправо/влево не ограничено
Движение курсора так же должно работать во всех диагоналях.
Все движения мышки происходят вместе с движением датчика, если датчик не подвижен или имеет небольшие колебания-курсор не подвижен.
Так же должна быть настройка чувствительности в режимах и общая, которая работает по умолчанию если в режиме не была назначена.

Планируемый бюджет :
Бюджет 4000 рублей, но если нужно больше - заплачу
Сроки :
2-3 недели
Оплата :
Наличкой, перевод на карту
Для связи :
Мой Вк: https://vk.com/dmitriy_boikov
 
Изменено:

poty

★★★★★★✩
19 Фев 2020
3,228
939
@bort707, согласен... Если делать по приведённому ТЗ, то тут больше вопросов, чем ответов... Защита от дребезга, тем более программная, предполагает задержку отклика от кнопки на время до 100мс, что для игровых применений будет смерти подобно. Аналогично - устранение дребезга в системе датчик - курсор. Компас - это вообще супер неточная система, в телефонах-то постоянно заедает, не говоря уже о её быстродействии.
Барометр с точностью до 2-4см на BMP180 тоже не сделать, или он будет измерять раз в секунду. Приведённые 80см и 100см нужно как-то калибровать, так как давление изменяется непрерывно и понять произошло это из-за движения руки или "звёзды сошлись" - будет невозможно.
Подключить 14 кнопок, барометр (/акселерометр), гироскоп, компас и обработать это всё в реальном времени на Leonardo, наверное, возможно, только вряд ли это можно будет использовать в игровом процессе.
 
Изменено: