Геймпад на ардуино для пк

Шла обычная пятница, ничто не предвещало беды…

Но червь «нужно что-то сделать» уже начал свою работу. После прочтения статьи я вспомнил, что у меня в барахле лет 15, если не больше, валяется сеговский геймпад. Забрал я его с твердым намерением сделать геймпад на процессоре AVR (про ардуино я тогда и не слышал, но пару небольших проектов на AVR сделал).

Еще больше утвердила мое намерение статья про MSX, и в пятницу я решил — делаю!

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

В качестве контроллера я решил использовать Beetle, так как он был заказан мной когда-то, но пока не испробован, да и не очень понравился «малым количеством портов».

И тут меня ждало разочарование — портов 6, кнопок 10. Горю моему не было предела, но мозг таки нашел решение, для начала я решил попробовать собрать прототип из 2-х кнопок, так как я решил использовать фокус с диодом, чтобы опрашивать 10 кнопок с помощью 6 выводов. Практически окрыленный, я засел за проверку… И тут случилась следующая неприятность — кнопок на джойстике больше, чем 10! В общем это был тот момент, когда нужно было смотреть в документацию, хотя идей было много — например припаять (ага, моим паяльником, который накрывает почти все ножки с одной стороны микросхемы), или поискать просветления в интернете.
Документация же четко сказала, что портов у Beetle на самом деле не 6, а 10, что сделало дальнейший процесс скучным (так я думал). (Использование 8 выводов дает возможность опрашивать 2 * 6 = 12 кнопок, что мне и было нужно)

Схема подключения — матрица 6 х 2, потому как оригинальная плата была разведена удобным мне образом. (Кстати в процессе предыдущей переделки дорожки были порезаны, чтобы подключить клавиатурный контроллер, пришлось восстанавливать, вышло страшненько)

Схема получившегося геймпада:

Быстро накидав пример я убедился что он не работает… Не понял?! Пример то простейший. Подумав, сообразил, что цифровому пину не хватает того сопротивления, что дают резиновые токопроводящие кнопки, немного изменил схему, теперь читается аналоговый сигнал и сравнивается с половиной максимума. Перепаиваю контакты, переписываю программу и… ничего не работает, совсем. Контроллер не определяется, все пропало. Код проверен, и перепроверен, все должно работать! А контроллер не видится ни в какую. Мотивация падает, делаем перерыв.

Через некоторое время безуспешно поигравшись с Beetle, ну все, убил контроллер своим паяльником, с сожалением достаю из закромов Arduino Micro, прошиваю прошивку и снова тишина! Становится понятно, что-то не так с кодом, в конце концов нахожу банальную причину — бесконечный цикл в loop (), исправляю, но зашить то не могу! Оказывается проблема, когда контроллер не видится решается нажатием на резет во время прошивания (или замыканием пинов в моем случае)

В итоге получился сеговский геймпад, проверен, работает, я счастлив: поиграл в Metal Gear, Felix The Cat, Super Mario.



P. S. «Трюк со светодиодом». Конечно не обязательно использовать светодиод, обычный диод лучше подходит, суть простая, вместо двух выводов использовать один, соединенный с разными кнопками через 2 диода:

Всем привет! В этом видео вы узнаете как, используя свои руки, Arduino и часик свободного времени можно сделать многофункциональный джойстик-пульт управления для различных игр на ПК или PS3.

Сделать это поможет открытый проект UnoJoy, который превратит обычную Arduino UNO в полноценное HID-устройство наподобие клавиатуры или мыши.

p.s. Необходимость в таком джойстике возникла из-за экспериментов с технологией GVS, о которой я расскажу немного позже...

Всем добра и удачных экспериментов!

Дубликаты не найдены

Не знаю кто тебя минусит, по мне так проект интересный особенно вкупе с GVS.

Я тоже не знаю, наверное, противники игр или кустарных джойстиков, ну да ладно, надеюсь кому нибудь да пригодится 🙂

Если ты и правда автор этого видоса, то жду рассказ об анонсированном управлении для вирт. реальности)

Сейчас время появилось и собирался было делать ролик про GVS (гальваническая стимуляция вестибулярного аппарата), да что-то призадумался... Учитывая что в аудитории есть люди, которым по 12 и даже меньше лет, стоит ли им видеть как кто-то показывает как сделать электроды, и подключать их к своей голове. Я просто думаю мало ли что может произойти, во-первых технология до конца не изучена, а во-вторых не дай бог какое нибудь не то напряжение подадут на голову и неизвестно что будет... Можно, конечно, поставить там ограничения 18+ и предупредить пару раз в видео что не стоит повторять, но боюсь это вряд ли остановит какого-нибудь заинтересовавшегося школьника. В общем, не знаю что делать. @KeyAnyPress , @test00129 , как считаете?

Все, вы меня убедили, буду пилить)

А меня что спрашивать? =)

Я считаю, что способ убиться найти в интернете не так уж и сложно, вспомнить тех же фей винкс. Но сам аппарат меня не сильно интересует, даже если он действительно работает.
Делай.

Я обратился как к одному из активных участников, нужно было чье-нибудь мнение, спасибо.

Спасибо, про UnoJoy знал уже давно, но никак не мог найти внятной инструкции

Дружище, отключай инструктора и захватывай аэродром на 450 км/ч.

Где он дешевый? Ардуина еще более дорогая нужна — Leonardo.

А что ты цену про микро сравниваешь с полноразмерной уно? Нано стоит 140 рублей (в Казани за 300 можно купить), при этом от уны отличается только размером.

Читайте также:  Белые буквы на черном фоне в word

Я лично за пару часов написал оболочку к vJoy, которая работает с Com-портом (чтобы из наны геймпад сделать), умеет в 128кнопок+8осей+4POV с 32 тысячами значений на один виртуальный геймпад (а виртуальных геймпадов до 16 штук).
https://www.youtube.com/watch?v=mp9sBLEI8tk

Joystick -> Arduino Nano -> Моя программа по обработке сигналов с COM-порта -> vJoy драйвер -> ОС

Не, я с написанием драйверов не дружу пока, хотя тоже заинтересован.

Надо разрабу Arduino Joystick на гитхабе написать, может он обновит свои драйвера.

Повторюсь =) Руль себе беспроводной делаю, тоже выкинул мк родной, хочу туда впихнуть pro micro на атмеге328 с NRF24. На МК все корректируется для нормальных значений, и передается по воздуху на NRF24 привязанную уже к pro micro leonardo, а оттуда в комп. В общем, часть моей универсальной беспроводной геймпад платформы будет.
Правда таааак лень все это делать. Хочу еще фидбек забахать с блэкджеком и шлюхами скоростью и жизнями (или еще чего, например количество патрон в обойме, состояние щитов для Dangerous Elite). Но это уже отдельной софтиной будет по ком-порту в леонардо, а оттуда на совместимое с этой инфой устройство. Задержка, кстати, вообще не ощущалась на тестовом образце беспроводного геймпада в данном сеттинге.

Я делаю универсальную беспроводную геймпад платформу на базе Arduino Leonardo (может видиться в системе как геймпад сразу же). =)
https://www.youtube.com/watch?v=vREFIXVD870&list=PL9YZSb.
Сегодня руль закупил с рук, чтобы его присобачить к этой штукенции и сделать беспроводным =)

Думаю над универсальностью премника, чтобы можно было и много-кнопочный-рычажковый руль присобачить, и элементарный акселерометр с 2-мя осями. Чтоб ничего друг другу не противило.

Ща еще искал как из некоторых конкретных игр (Dangerous Elite, Euro truck simulator 2) получить значения с приборной доски.

Очень здорово) Про получение значений тоже интересно, по сути, если получить к ним доступ, то можно делать очень неплохие вещи, правда, жаль что в диапазоне одной игры...

http://ets2mods.ru/topic/15530-mobilnaia-pribornaia-panel-ve.
Так, у ETS2 есть даже api для этого, а вот у DE нет =( Придется мучатся с отловом нужных параметров в памяти игры. Буду надеяться, что офсеты в памяти сохраняются и достаточно будет только один раз найти адрес скорости. Для тундры, почти уверен, есть тоже API.

Ну, для этого в любом случае придется отдельную софтину писать и по сериалу, например, выводить в МК. Можно софтину и переписывать добавляя игры независимо от МК.

Блин, женщина заставила выкинуть все мои 20+ залитых клавиатур, так бы запилил пост, как можно сделать геймпад, или гитару, для гитар хиро, из залитой пивом клавы.

@vivaos , а не подскажете, как залить программу на сам чип?

как раз для этого и нужна программа FLIP от Atmel, вот статейка на хабре для примера:

И, забыл давно сказать, нужна нормальная дорогая UNO, а не дешевый ширпотреб с китая, ибо на обычных ширпотребных Унах стоит CH340G вместо AtMega8U4.

У меня на ширпотребе, как вы изволили выразиться, с Китая, стоит Атмега. Что-то мне подсказывает, что о ширпотребных унах вы знаете чуть меньше, чем ничего. Я не читал, но осуждаю ©, да ?

Об этом я специально заострил внимание и показал атмегу на видео. И да, подойдет таже UNO с китая, только с мк в дип корпусе, обычно на платах такой разводки и ставится atmega16 или 8.

А какой из чипов прошивается? Обведённый зелёным или красным? Просто мне нужно прошить atmega8a-pu, который, вроде бы, можно прошить при помощи этой платы. Но точно как это делать я не знаю.

Если Arduino в режиме DFU, то зеленым, красным это основной микроконтроллер. Я сначала загружал код на основной микроконтроллер (красным) и затем, переведя в DFU, специальный код, позволяющий ардуино работать как переферийное устройство в зеленый микроконтроллер. Если вам нужно просто прошить отдельный мк, то у ардуино есть встроенный ISP-программатор, вот пример загрузки bootloader в atmega328p при помощи него: http://bigbarrel.ru/arduino_bootloader/

Спасибо. И ещё вопрос:

Я читал, что прошить чип можно заменив им основной микроконтроллер и замкнув несколько контактов на плате. А потом уже его прошивать. Об этом вы ничего не слышали?

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

Вот. Скриншотов я наделал, чтобы вы не искали нужный участок в статье.

Что вы скажете по этому поводу? И могли бы вы посоветовать плату, которая подойдёт для этого способа?

Я немного не понимаю зачем так заморачиваться, если вы, как я понял, все равно будете где то заказывать эту плату... Почему нельзя обойтись обычным программатором или ISP-программатором на базе Arduino? На счет платы — придется искать такую, которая будет на своем борту иметь эту микросхему FT232RL... Я не встречал таких, видел только клоны ардуино с микросхемой CH340. Видимо, придется покупать эту Freeduino, но опять же, зачем?) Если вам нужно разово это сделать, то можно просто протянуть проводки от ардуины и все прошить...

Окей, спасибо. Просто я собираюсь, переделать геймпад от Sega MD, под USB (думаю, вы уже догадались). Пока что хочется просто сделать это. Самыми простыми, краткими и незатратными путями, по возможности. Разобраться с ардуино вообще и начать делать с ней всякие штуки тоже есть в планах, но это в долгосрочной перспективе.

Читайте также:  Герметик для газовой варочной панели

Если идти совсем простыми путями, то вот 🙂 https://geektimes.ru/post/245490/ А вообще, с учетом стоимости всех плат или программаторов, проще купить современный usb геймпад...

А почему не собрать геймпад на нано?

На эту статью натыкался, когда искал пути преобразования геймпада)

Но это слишком уж просто)

Ну а в руках хочется держать именно тот самый, сеговский. А в магазинах его под USB найти сложно(я не находил)

не спорю,хочется конечно объема. чтоб вдавливать кнопки. а еще мозгов,ибо этим надо заниматься,знать что и где заказать,а потом как собрать

не, ну, прикольно конечно. Вот только зачем?

Газ регулируется скролом. Шасси так же кнопками.

В чём смысл такой неудобной конструкции?

Эта конструкция — простой пример, образец, собранный за 1 минуту на макетке, ни в коем случае не какое-то готовое устройство. Был сделан с целью показать, что можно сделать своими руками необходимую панель для управления игровым процессом. Вариантов реализаций, на самом деле, масса — поставить руль на потенциометр — и вот уже готов руль для гонок, дешево и сердито, поставить ползунковый резистор — и вот готовы руды для самолета, за которые пришлось отдать гораздо меньшую сумму, чем просит производитель. А главная задумка — с нажатием кнопок на этом пульте, вы можете не только управлять игровым процессом, но и запускать реальные, физические процессы, например — включение моторчиков для вибрации при стрельбе или какой либо световой шкалы-индикации того же уровня оборотов двигателя. Опять же, вариантов масса, нужно только подключить фантазию. В моем случае я использую эту связку — ардуино-компьютер-физические объекты, для экспериментов с технологией GVS, о которой упомянул в видео.

Всем привет! В этом видео вы узнаете как, используя свои руки, Arduino и часик свободного времени можно сделать многофункциональный джойстик-пульт управления для различных игр на ПК или PS3.

Сделать это поможет открытый проект UnoJoy, который превратит обычную Arduino UNO в полноценное HID-устройство наподобие клавиатуры или мыши.

p.s. Необходимость в таком джойстике возникла из-за экспериментов с технологией GVS, о которой я расскажу немного позже...

Всем добра и удачных экспериментов!

Дубликаты не найдены

Не знаю кто тебя минусит, по мне так проект интересный особенно вкупе с GVS.

Я тоже не знаю, наверное, противники игр или кустарных джойстиков, ну да ладно, надеюсь кому нибудь да пригодится 🙂

Если ты и правда автор этого видоса, то жду рассказ об анонсированном управлении для вирт. реальности)

Сейчас время появилось и собирался было делать ролик про GVS (гальваническая стимуляция вестибулярного аппарата), да что-то призадумался... Учитывая что в аудитории есть люди, которым по 12 и даже меньше лет, стоит ли им видеть как кто-то показывает как сделать электроды, и подключать их к своей голове. Я просто думаю мало ли что может произойти, во-первых технология до конца не изучена, а во-вторых не дай бог какое нибудь не то напряжение подадут на голову и неизвестно что будет... Можно, конечно, поставить там ограничения 18+ и предупредить пару раз в видео что не стоит повторять, но боюсь это вряд ли остановит какого-нибудь заинтересовавшегося школьника. В общем, не знаю что делать. @KeyAnyPress , @test00129 , как считаете?

Все, вы меня убедили, буду пилить)

А меня что спрашивать? =)

Я считаю, что способ убиться найти в интернете не так уж и сложно, вспомнить тех же фей винкс. Но сам аппарат меня не сильно интересует, даже если он действительно работает.
Делай.

Я обратился как к одному из активных участников, нужно было чье-нибудь мнение, спасибо.

Спасибо, про UnoJoy знал уже давно, но никак не мог найти внятной инструкции

Дружище, отключай инструктора и захватывай аэродром на 450 км/ч.

Где он дешевый? Ардуина еще более дорогая нужна — Leonardo.

А что ты цену про микро сравниваешь с полноразмерной уно? Нано стоит 140 рублей (в Казани за 300 можно купить), при этом от уны отличается только размером.

Я лично за пару часов написал оболочку к vJoy, которая работает с Com-портом (чтобы из наны геймпад сделать), умеет в 128кнопок+8осей+4POV с 32 тысячами значений на один виртуальный геймпад (а виртуальных геймпадов до 16 штук).
https://www.youtube.com/watch?v=mp9sBLEI8tk

Joystick -> Arduino Nano -> Моя программа по обработке сигналов с COM-порта -> vJoy драйвер -> ОС

Не, я с написанием драйверов не дружу пока, хотя тоже заинтересован.

Надо разрабу Arduino Joystick на гитхабе написать, может он обновит свои драйвера.

Повторюсь =) Руль себе беспроводной делаю, тоже выкинул мк родной, хочу туда впихнуть pro micro на атмеге328 с NRF24. На МК все корректируется для нормальных значений, и передается по воздуху на NRF24 привязанную уже к pro micro leonardo, а оттуда в комп. В общем, часть моей универсальной беспроводной геймпад платформы будет.
Правда таааак лень все это делать. Хочу еще фидбек забахать с блэкджеком и шлюхами скоростью и жизнями (или еще чего, например количество патрон в обойме, состояние щитов для Dangerous Elite). Но это уже отдельной софтиной будет по ком-порту в леонардо, а оттуда на совместимое с этой инфой устройство. Задержка, кстати, вообще не ощущалась на тестовом образце беспроводного геймпада в данном сеттинге.

Я делаю универсальную беспроводную геймпад платформу на базе Arduino Leonardo (может видиться в системе как геймпад сразу же). =)
https://www.youtube.com/watch?v=vREFIXVD870&list=PL9YZSb.
Сегодня руль закупил с рук, чтобы его присобачить к этой штукенции и сделать беспроводным =)

Думаю над универсальностью премника, чтобы можно было и много-кнопочный-рычажковый руль присобачить, и элементарный акселерометр с 2-мя осями. Чтоб ничего друг другу не противило.

Читайте также:  Диаграмма последовательности в visio

Ща еще искал как из некоторых конкретных игр (Dangerous Elite, Euro truck simulator 2) получить значения с приборной доски.

Очень здорово) Про получение значений тоже интересно, по сути, если получить к ним доступ, то можно делать очень неплохие вещи, правда, жаль что в диапазоне одной игры...

http://ets2mods.ru/topic/15530-mobilnaia-pribornaia-panel-ve.
Так, у ETS2 есть даже api для этого, а вот у DE нет =( Придется мучатся с отловом нужных параметров в памяти игры. Буду надеяться, что офсеты в памяти сохраняются и достаточно будет только один раз найти адрес скорости. Для тундры, почти уверен, есть тоже API.

Ну, для этого в любом случае придется отдельную софтину писать и по сериалу, например, выводить в МК. Можно софтину и переписывать добавляя игры независимо от МК.

Блин, женщина заставила выкинуть все мои 20+ залитых клавиатур, так бы запилил пост, как можно сделать геймпад, или гитару, для гитар хиро, из залитой пивом клавы.

@vivaos , а не подскажете, как залить программу на сам чип?

как раз для этого и нужна программа FLIP от Atmel, вот статейка на хабре для примера:

И, забыл давно сказать, нужна нормальная дорогая UNO, а не дешевый ширпотреб с китая, ибо на обычных ширпотребных Унах стоит CH340G вместо AtMega8U4.

У меня на ширпотребе, как вы изволили выразиться, с Китая, стоит Атмега. Что-то мне подсказывает, что о ширпотребных унах вы знаете чуть меньше, чем ничего. Я не читал, но осуждаю ©, да ?

Об этом я специально заострил внимание и показал атмегу на видео. И да, подойдет таже UNO с китая, только с мк в дип корпусе, обычно на платах такой разводки и ставится atmega16 или 8.

А какой из чипов прошивается? Обведённый зелёным или красным? Просто мне нужно прошить atmega8a-pu, который, вроде бы, можно прошить при помощи этой платы. Но точно как это делать я не знаю.

Если Arduino в режиме DFU, то зеленым, красным это основной микроконтроллер. Я сначала загружал код на основной микроконтроллер (красным) и затем, переведя в DFU, специальный код, позволяющий ардуино работать как переферийное устройство в зеленый микроконтроллер. Если вам нужно просто прошить отдельный мк, то у ардуино есть встроенный ISP-программатор, вот пример загрузки bootloader в atmega328p при помощи него: http://bigbarrel.ru/arduino_bootloader/

Спасибо. И ещё вопрос:

Я читал, что прошить чип можно заменив им основной микроконтроллер и замкнув несколько контактов на плате. А потом уже его прошивать. Об этом вы ничего не слышали?

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

Вот. Скриншотов я наделал, чтобы вы не искали нужный участок в статье.

Что вы скажете по этому поводу? И могли бы вы посоветовать плату, которая подойдёт для этого способа?

Я немного не понимаю зачем так заморачиваться, если вы, как я понял, все равно будете где то заказывать эту плату... Почему нельзя обойтись обычным программатором или ISP-программатором на базе Arduino? На счет платы — придется искать такую, которая будет на своем борту иметь эту микросхему FT232RL... Я не встречал таких, видел только клоны ардуино с микросхемой CH340. Видимо, придется покупать эту Freeduino, но опять же, зачем?) Если вам нужно разово это сделать, то можно просто протянуть проводки от ардуины и все прошить...

Окей, спасибо. Просто я собираюсь, переделать геймпад от Sega MD, под USB (думаю, вы уже догадались). Пока что хочется просто сделать это. Самыми простыми, краткими и незатратными путями, по возможности. Разобраться с ардуино вообще и начать делать с ней всякие штуки тоже есть в планах, но это в долгосрочной перспективе.

Если идти совсем простыми путями, то вот 🙂 https://geektimes.ru/post/245490/ А вообще, с учетом стоимости всех плат или программаторов, проще купить современный usb геймпад...

А почему не собрать геймпад на нано?

На эту статью натыкался, когда искал пути преобразования геймпада)

Но это слишком уж просто)

Ну а в руках хочется держать именно тот самый, сеговский. А в магазинах его под USB найти сложно(я не находил)

не спорю,хочется конечно объема. чтоб вдавливать кнопки. а еще мозгов,ибо этим надо заниматься,знать что и где заказать,а потом как собрать

не, ну, прикольно конечно. Вот только зачем?

Газ регулируется скролом. Шасси так же кнопками.

В чём смысл такой неудобной конструкции?

Эта конструкция — простой пример, образец, собранный за 1 минуту на макетке, ни в коем случае не какое-то готовое устройство. Был сделан с целью показать, что можно сделать своими руками необходимую панель для управления игровым процессом. Вариантов реализаций, на самом деле, масса — поставить руль на потенциометр — и вот уже готов руль для гонок, дешево и сердито, поставить ползунковый резистор — и вот готовы руды для самолета, за которые пришлось отдать гораздо меньшую сумму, чем просит производитель. А главная задумка — с нажатием кнопок на этом пульте, вы можете не только управлять игровым процессом, но и запускать реальные, физические процессы, например — включение моторчиков для вибрации при стрельбе или какой либо световой шкалы-индикации того же уровня оборотов двигателя. Опять же, вариантов масса, нужно только подключить фантазию. В моем случае я использую эту связку — ардуино-компьютер-физические объекты, для экспериментов с технологией GVS, о которой упомянул в видео.

Оцените статью
Добавить комментарий

Adblock
detector