Как стать автором
Обновить

Комментарии 17

У Arduino Pro Micro чип микроконтроллера называется 32u4, а не 23u4. Опечатка, наверное.

При обработке нажатий кнопок не вижу "борьбы" с дребезгом контактов. Нормально нажатия обрабатываются, нет лишних срабатываний?

По поводу скорости джойстика - наверное, можно разные способы придумать. Например, запоминать время (из функции millis) начала движения, т.е. отклонения его от нейтрального положения. В зависимости от того, сколько времени прошло от этого момента, делить величину перемещения на коэффициент, значение которого зависит от времени. Чем дольше времени джойстик сохраняют отклоненным, тем больше скорость. Как только джойстик останавливают, сбрасывать значение коэффициента в такое, чтобы скорость опять стала минимальной.

Думаю период главного цикла слишком большой, чтобы ловить дребезг. Пока отладочные сообщения передадутся, он уже самоустранится.

Отладочные сообщения в коде закомментированы.

ДА, очепятка вышла)
По поводу дребезга, контакты отрабатывают хорошо, без ложных срабатываний.
Попробуем реализовать тобой предложенное)

По поводу убегающего курсора - имхо, можно сделать, чтобы передатчик несколько раз в секунду передавал некую последовательность байт, означающую "я живой". Если в течение секунды эта последовательность в приемник не приходит (или пока еще ни разу не приходила), курсор не перемещать, считая, что связи с передатчиком нет.

Я аналогичную проблему решил аэро-мышью. Нажимаешь кнопку, и взмахи пультом управляют движением курсора (со временем очень точно можно наловчиться это делать). Кнопочки переназначил на смену аудио-дорожек, субтитров. Плэй\Пауза\Громкость само собой там тоже есть. Одна из кнопок программируется для включения\выключения ТВ по инфракрасному каналу (есть не во всех моделях таких пультов).

Я, конечно, за DIY.
Но готовый беспроводной геймпад очень удобен в качества пульта управления для компьютера - кинотеатра/игровой станции.
Использую Logitech Cordless Rumblepad 2 и JoyToKey.
Вот раскладка кнопок, позволяет по быстрому рулить в Total commander и многих других приложениях.

В медиаплеере (MPC-HC) вообще полный контроль - перемотка разной продолжительности с модификаторами ALT/CTRL/Shift, переключение субтитров Shift + Up/Down, переключение звуковых дорожек CTRL + Up/Down. На CTRL + Shift +Up/Down повесил переключение шейдеров и создал несколько профилей с разной гаммой, получилось переключение гаммы.
Для игр в JoyToKey назначено правило C:\Games - при запуске пририложений из этой папки, JoyToKey отключается и не мешает.

Да, есть такое, но захотелось попробовать сделать своё)

можно сделать еще круче и проще.

Подключаем к ПК TOF датчик. Получаем бесконтактный джойстик.

Управляем им движениями руки или ноги - вправо влево, вверх вниз.

Можно просто через микрофон управлять голосом лежа на диване.

Также требуется создать систему питания на основе аккумулятора 18 650 с модулями заряда и преобразователя напряжения до 5V.
Любая плата для повербанка.

Я для зарядки головного светильника (он не имеет встроенного контроллера заряда для своего Li-Ion аккумулятора, а внешнее ЗУ — неудобная фигня) использую плату на основе микросхемы ip5306 (платки у некоторых произодителей маркируются как mh-cd42).
Размеры у платки примерно с первую фалангу пальца (24*16мм) и имеется светодиодный индикатор уровня заряда из 4 светодиодов.
Единственные проблемы: ток заряда — 2А, при малом потреблении (порядка 50мА) может отключить преобразователь (на нагрузку способна выдавать до 2А).

Но можно поискать что-то попроще, правда не будет отображения уровня заряда.
Например, есть платы на основе TP4056 и MT3608, где напряжение регулируется подстроечным резистором (ток заряда регулируется перепаиванием smd-резистора, да и подстроечный имеет смысл сразу заменить на постоянный, подобрав наиболее подходящий номинал).
Хотя, если имеется возможность заказать/сделать плату самому, то лучше собрать вот что-то вроде этого проекта (там улучшено потребление в простое, хотя и упомянутую выше плату на основе TP4056 и MT3608 можно доработать, инструкции в инете есть).

О, спасибо за идею!

Думал использовать этот модуль. Компактный и надёжный, к тому же есть возможность замены АКБ без перепайки.
Модуль питания WeMos на аккумуляторе Li-Ion 18650 купить оптом и в розницу в СompactTool с доставкой по Москве и России (compacttool.ru)

Ребята подскажите пожалуйста а можно сделать геймпад которого допустим на четыре кнопки больше чем на геймпаде для Sony PlayStation с учётом стиков?

Почему нет? Два путя:

1)найди и купить какого нить мутант с Китая

2) Подобрать контроллер с достаточно необходимым кол-вом входов/выходов и добавить свои кнопки.

1. на AliExpress я ничего не нашёл а искал я долго
2. Я не совсем понял какой контроллер надо взять к которому добавить необходимое количество кнопок?

Проводных геймпадов/джойстиков куча вариантов на микроконтроллере, проект Mjoy например. С беспроводными сложнее.

Но можно и проще:

  1. Берёшь USB-клавиатуру (лучше нормального бренда, например Logitech), проверяешь что выбранные клавиши будут работать одновременно.

  2. В подходящем джойстике перезаешь все дорожки к микросхеме, добавляешь кнопок на корпус если надо.

  3. Плату от клавиатуры помещаешь внутрь джойстика и сверяясь с плёнками клавиатуры распаиваешь провода к кнопкам.

  4. Можно взять и беспроводную/Bluetooth клавиатуру.

Я когда-то давно, перейдя со спектрума на P1 и озадачившись отсутствием геймпадов для PC, делал вывод из клавиатуры матрицы кнопок 12345 x 1QAZ т.е. 9 проводов, 20 кнопок макс.
В эмуляторе NES эти кнопки ремапились на джойстик. Предварительно долго тыкал клавиши одновременно, выясняя возможности клавиатуры (Chikony KB-5311). Получилось неплохо - до 5 кнопок одновременно гарантированно, т.е. два направления на крестовине + 3 кнопки. И больше, в зависимости от положения кнопок в матрице.

P.S. Ещё интересная штука по теме - метод ввода текста с джойстика - Daisywheel, используется в Steam Big Picture. Порт на JS и ссылка на тестовый сайт - https://github.com/likethemammal/daisywheeljs
Если кто прикрутит возможность использовать в Windows для всех приложений - просигнальте.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории