Подключаем джойстик от «Денди» к компьютеру своими руками: супер-решение

Подключаем джойстик от Dendy к компьютеру

В статье я не только подскажу как подключить джойстик от денди к компьютеру, но и предложу Вам скачать игры для приставок Dendy, Nintendo, Sega. Так что если Вы и не собираетесь подключать джойстик, Вы можете просто скачать игры и играть на обычной клавиатуре.

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

Начнем с джойстика для Dendy (NES). Если у вас есть gamepad, и у него есть кнопки A, B, Turbo A, Турбо B, Select и Begin (последних двух может и не быть, настоятельно рекомендую такие не брать) и связывается через 5 проводов, тогда это или NES или аналог NES и будет работать, если Вы все сделаете правильно.

Однако пора приступать к делу. Все, что вам понадобится – это разъем LPT порта (он же параллельный, он же от принтера), паяльник, пять абсолютно любых диодов, ну и, собственно, сам джойстик. Приступим.

Спаивается все по схеме, если хотите подключить два джойстика, то все провода припаиваются также кроме 8 и 7 контакты на NES, их надо припаять к 11 и 12 контакту на LPT.

Чтобы припаять провода по схеме, надо вскрывать разъем, я же предлагаю сделать все гораздо проще. Можно просто сделать своеобразный удлинитель переходник. Помимо LPT нам понадобится еще и СОМ разъем (папа)

Еще очень важная деталь. На диодах есть маркировка, их следует припаивать полосочкой вверх. Просто припаиваете проводки по схеме к LPT и все.

Если верить мануалу, то подходит для ОС: Win9x/Me/NT/XP/2k. Разархивируем в любое удобное место и запускаем Setup.exe. На экране появляется такое окошко по которому надо кликнуть:

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

После установки в меню “Пуск” появится папка “Parallel Port Joystick”, а в ней несколько ярлыков. Нас интересует “Configure Joysticks” – его и запускаем. На экране появляется окно утилиты конфигурирования джойстиков. В нем нажимаем кнопку “Add”.

Видим окно конфигурирования нового джойстика. В нем выставляем значения, как приведено на рисунке. Не смущайтесь в выборе типа интерфейса, с ОС Линукс в нашем случае это не связано.

Выставив правильно все значения, жмем на кнопку “Add”. Попадаем в предыдущее окно. Если у нас джойстик один, можно смело жать кнопку “Done”. Если же нам нужно настроить и второй джойстик, то заново жмем “Add”, появляется уже знакомый диалог, правда выбор наш уже несколько ограничен, но значения нужно будет выставить так же как и на картинке выше. Исключение лишь в предпоследней строке, т.е. номер контроллера теперь указываем не 1, а 2 или более в зависимости от того какой джойстик по счету мы подключаем.

Заходим в “Панель управления” и запускаем ярлык “Игровые устройства”. Выбираем интересующий нас джойстик и жмем по кнопке “Свойства”. Появляется окно свойств. Во вкладке “Проверка” мы можем проверить работает ли наш джойстик. В момент, когда джойстик никто не трогает и ни одна из его кнопок не зажата крестик осей будет по центру белой области, а изображения кнопок будут все одинаково темно-красными.

Если мы правильно подключили джойстик и будем нажимать кнопки, то реакция крестика и изображения кнопок будут соответственные. В моем случае я нажал одновременно кнопку-крестик вниз и вправо, а так же кнопку “Start” и кнопку “B”. Кстати, при этом еще и на клавиатуре пришлось нажать “Alt”+”Print Screen” для создания скрина экрана. а учитывая позднее время и помочь было попросить некого.

Читайте также:
Полезные самоделки из пластиковых труб для водопровода: 6 оригинальное решение

Если у Вас тест проверки пройден с положительным результатом, то поздравляю Вас. Вы смогли сами своими руками подключить и настроить джойстик от приставки “Денди” к компьютеру через LPT порт.

Cхемы и особенности подключения джойстиков игровых приставок к PC

В персональных компьютерах в играх для управления в основном используются клавиатура и мышь. Однако, в некоторые игры удобнее играть при помощи джойстика или геймпада, например в автосимуляторы или спортивные – футбол, хоккей и т.д. Для этой цели можно применить джойстики от игровых приставок. Любители компьютерных игр начали подключать привычные и удобные джойстики от игровых видео приставок к своим компьютерам с 1999 г., когда для их обслуживания появился программный пакет DirectPad Pro, бесплатно распространяемый через Интернет. Но нередко случается, что вполне исправный джойстик отказывается работать с компьютером. Предлагается решение этой проблемы, предоставляя к тому же полезную во многих играх возможность увеличить число одновременно подключенных к компьютеру джойстиков.

Джойстики от игровых приставок соединяют с параллельным портом LPT1 или LPT2 компьютера через переходники всего из нескольких малогабаритных диодов. В Интернете несложно найти схемы подключения джойстиков от приставок “Atari”, “TurboGrafX-16”, “Genesis” (“Sega Mega Drive-ll”), “NES” (“Dendy”), “PlayStation” (в том числе джойстик “DUAL SHOCK”), “SuperNES”, “Sega Master System”, “Nintendo-64”, “Sega Saturn”, ‘Jaguar”, “Virtual Boy”. Сами джойстики никакой переделки не требуют и работают, как правило, без внешнего источника питания.

Наиболее распространены в странах СНГ джойстики от “Dendy”, “PlayStation” и “Sega Mega Drive”. Последние, к сожалению, принципиально несовместимы с некоторыми материнскими платами компьютеров недавней разработки.

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

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

Основных причин этому — две. Во-первых, недостаточна нагрузочная способность используемых для питания джойстиков линий LPT-порта. Уже под нагрузкой 3. 4 мА уровень лог. 1 (с учетом падения напряжения на диодах переходника) падает ниже необходимого для работы микросхемы джойстика минимума — 3 В. Во-вторых, проявляется свойственный КМОП-микросхемам тиристорный эффект — внезапное резкое увеличение потребляемого тока.

Последнее явление связано с открыванием обычно надежно закрытого “паразитного” тиристора, образованного внутри микросхемы участками полупроводникового кристалла различной проводимости. Оно становится возможным, если напряжение на логическом входе микросхемы превышает напряжение питания, и происходит, как правило, в моменты включения питания или “горячей”, без выключения питания, перестыковки разъемов.

Именно такие ситуации возникают при подключении джойстика к LPT по “стандартной” схеме. Напряжение на его логических входах повышено, так как в отличие от вывода питания они соединены с линиями порта непосредственно, без разделительных диодов и не потребляют от них заметного тока. Ситуацию усугубляет обычно имеющийся в цепи питания джойстика и разряженный в момент включения блокировочный конденсатор.

Нужно сказать, что не все КМОП-микросхемы подвержены тиристорному эффекту в одинаковой мере. Он характерен, например, для микросхем КР537РУ10, КР1146ФП2, но редко проявляется в таких распространенных сериях, как К561, КР1561 и многих других, изготовленных с использованием специальных приемов — охранных колец, МОП-транзисторов с вертикальным каналом и окольцовывающим затвором, технологии КНС (кремний на сапфире).

В данной статье мы рассмотрим способы подключения этих джойстиков к персональному компьютеру. Сначала несколько общих рекомендаций.

Как правило, схемы подключений очень простые и содержат небольшое число радиоэлементов. Для подключения джойстиков используется LPT-порт компьютера. Можно также использовать мультикарту, которая устанавливается в ISA разьем расширения на материнской плате. Мультикарта применялась в старых моделях PC и представляет собой плату с контроллерами LPT, COM портов, флоппи диска и т.п. Мультикарт существует несколько разновидностей. Для наших целей необходима мультикарта, в которой есть контроллер и соответственно разъём LPT порта. Кстати, применяя мультикарту, исключается риск в случае ошибки сжечь выходные цепи контроллера LPT порта в материнской плате. А если сгорит мультикарта, то материальный ущерб от этого не будет столь ощутимым.

Читайте также:
Гараж для машинок своими руками

При подключениях желательно кабель джойстика не разрезать – он может пригодиться еще по своему прямому назначению. Лучше попробовать найти ответную часть разъёма для подключения джойстика к интерфейсу PC. Если ответную часть разъёма найти не удалось, то можно разобрать какой-нибудь разъём (вилку или розетку – в зависимости от того, какой вид разъёма у джойстика) с подходящими по размеру штырьками или гнездами и их использовать для подключения. Разумеется, что в данном случае каждый штырек или гнездо придется подключать к контакту разъёма джойстика отдельно. Во избежании короткого замыкания на каждое гнездо (или штырек) надевается кембрик подходящего диаметра и все это обматывается изоляционной лентой и той же лентой прикрепляется к корпусу разъёма джойстика. Внешне выглядит это не очень красиво, зато надежно – не будет замыканий да и гнезда (или штырьки), подключенные к разъёму джойстика, не будут выскакивать.

При подключении к параллельному порту возникают проблемы с питанием джойстика, потому что сам порт не имеет выхода питания +5 В или другого. Конечно, можно взять напряжение питания с игрового порта или непосредственно с блока питания компьютера. Такое решение вполне возможно, но создает дополнительные проблемы. В данном случае можно поступить проще. Напряжение питания может быть получено со штырька данных порта LPT. Для геймпадов с малым потреблением тока достаточно использовать выпрямленное напряжение со штырька 9. Для джойстиков с относительно большим током потребления используется выпрямленное напряжение сразу с нескольких штырьков данных, например с 3 по 9. Штырьки соединяются с анодами (+) выпрямительных диодов, а диоды, в свою очередь катодами (-) соединяются в одну точку, которая подключается к проводу питания джойстика. В качестве общего провода любой штырек LPT порта с 18 по 25.

В качестве примера рассмотрим подключение джойстика от игровой приставки SONY PlayStation.

Рис.1

Вид разъёма на рисунке показан так, если на него смотреть со стороны штырьков. Имеется возможность подключить одновременно 2 джойстика. В данном случае все идущие ко второму джойстику провода на приведенной схеме дублируются кроме подключенных к DB25-10 и DB25-12. Провод второго джойстика вместо DB25-10 подключается к DB25-13, а вместо провода DB25-12 соответственно DB25-15.

Следует учесть, что при одновременном подключении двух джойстиков параллельный порт уже не сможет обеспечить необходимой мощности в цепи питания, поэтому придется использовать другой источник питания. Как уже говорилось выше, можно использовать напряжени + 5 B непосредственно от блока питания компьютера или воспользоваться любым внешним источником с выходным напряжением 4.5 – 5 В и током 100 – 150 mA. Дополнительный источник питания подключается так: все диоды с контактов DB25-5 – DB25-9 удаляются, а плюс дополнительного источника питания подключается в ту точку, где были соединены катоды диодов. Общий провод дополнительного источника соединяется с DB25-18/19. Схема подключения двух джойстиков приведена ниже.

Рис.2

Показанный на рисунке ещё один источник питания +9 В предназначен для питания встроенных двигателей геймпада Dual Shock (функция вибрации). Если эта возможность джойстика не используется или подключается простой джойстик (не Dual Shock), то этот источник питания не подключается. При необходимости в использовании данной функции следует подключить источник питания напряжением 9 В в соответствии с приведенной схемой.

Призма – не по детски интересные поделки
своими руками.

Для справки – разъёмы бывают “папа” – со штырьками и “мама” с дырочками под штырьки, откуда пошли такие аналогии можно только догадываться.

Читайте также:
Термосумка своими руками: супер-идея для пикника

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

Подключаем джойстик от приставки Денди к параллельному порту компьютера LPT своими руками

Подключаем джойстик от приставки Денди к параллельному порту компьютера LPT своими руками

Если честно, то у себя на задней панели я такого не нашёл и залез поглубже. На материнской плате LPT порт все-таки оказался.

Подключаем джойстик от приставки Денди к параллельному порту компьютера LPT своими руками

В своей “коллекции” железок откапал необходимый штекер, который и подключил к материнке. Если Вы попали в аналогичную ситуацию и у Вас нет вывода LPT на задней панели системного блока, но он присутствует на материнской плате подобный штекер можно найти на каком-нибудь радио-рынке или у перекупщиков Б/У запчастей для компьютеров. На многих, особенно старых, материнских платах он не припаян жёстко, а выносится именно таким штекером, поэтому найти его не должно составить особого труда:

Подключаем джойстик от приставки Денди к параллельному порту компьютера LPT своими руками

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

Что бы не загружать схему я не стал делать надписи на самой картинке, а все нужные нам контакты обозначил цветами. Отдельные контакты параллельного порта предназначены для различных целей: одни – для ввода, другие – для вывода данных. Особо вдаваться в тонкости работы компьютера и LPT-портов не будем. Думаю, достаточно будет объяснить только те, которые нам понадобятся. Итак:

  • Желтый – Clock
  • Ораньжевые контакты – с них питаем джойстик (около 5В). Обязательно только через диоды , иначе можно спалить LPT контроллер на материнской плате или всю мат. плату.
  • Синий – Земля
  • Зеленый – Latch
  • Голубой – Управляющий контакт (10 контакт для первого джойстика, 11 – для второго, 12 – для третьего, 13 – для четвёртого, 15 – для пятого). Имейте В Виду, что штырёк 14 не использован , так как он не является входом параллельного порта.

ВАЖНО: Эта схема и все нижеследующие отображают выходы если смотреть на дырочки, ,т.е. основной провод выходит “сзади”.

Если Вам интересно, то Clock и Latch это два входных бита, которые управляют последовательной передачей.

В виду того, что клонов приставки NES (Денди) было превеликое множество поэтому и разъёмов подключения джойстика к приставке было несколько. Цвета контактов обозначены соответственно цветам в Схеме разъёма LPT. Отличает лишь замена оранжевых контактов одним красным, т.к. питание берётся с 5-ти контактов, а подаётся на джойстик через один. Представлено 3 наиболее распространённых:

На схемах должно быть все достаточно понятно. Но, без комментариев схемы оставить не могу. Во-первых, напомню, что питать джойстик надо через диоды. Что это такое? Это, грубо говоря, выпрямители тока, т.е. они в одну сторону ток пропускают, а в другую нет. Таким образом, с LPT порта ток проходит, а вернуться на него через эти контакты диоды-то и не дают. Проверить диод у Вас в руках или нет Вы можете с помощью обычного мультиметра. Ток должен проходить от LPT к джойстику, а не как не наоборот. Если у Вас нет мультиметра, можете довериться подсказке на диоде – на них наносят полоску или схематичное изображение диода. На картинке ниже стрелкой указано направление протекания тока и соответствующее положение диода.

Таким образом, на диодах есть маркировка, и их следует припаивать полосочкой вверх, как на рисунке ниже. Просто припаиваете проводки по схеме к LPT и все.

Подключаем джойстик от приставки Денди к параллельному порту компьютера LPT своими руками

Вторым важным моментом является подключение двух и более джойстиков. NES/SNES джойстики имеет линию Data, выше она названа управляющим контактом и на схемах обозначена голубым цветом. Она уникальна для каждого устройства (если их у Вас несколько) и каждый геймпад имеет свой собственный штырёк Data.

(pin 10) —–> Pad 1 data – для первого геймпада
(pin 11) —–> Pad 2 data – для второго геймпада
(pin 12) —–> Pad 3 data – т.д.
(pin 13) —–> Pad 4 data
(pin 15) —–> Pad 5 data

Имейте В Виду, что штырек 14 не использован, так как он не является входом параллельного порта.

Подключаем джойстик от приставки Денди к параллельному порту компьютера LPT своими руками

5 одинаковых диода я не нашёл, пришлось один взять отличный от других. Лучше конечно, если все 5 будут одинаковые. Если одинаковых нет, то по параметрам они должны быть примерно одинаковы, т.е. надо что бы сопротивление их не сильно отличалось.

Разъём DB25M можно взять со шнура нуль модема или со старого принтерного кабеля (Centronics’а). Лишь бы он был разборным. Хотя, конечно, можно и разрезать сам кабель и прозвонить мультиметром. Откуда я взял такой разъём? Все с той же “коллекции” компьютерного барахла. С другой стороны мой разъём имел не огрызки проводов с другой стороны, а вполне приличный разъёмчик, который я не стал разбирать, а “понавтыкал” в соответственные “дырки” провода и соединил с разъёмом джойстика. В итоге получилось очень даже аккуратно:

Подключаем джойстик от приставки Денди к параллельному порту компьютера LPT своими руками

Иногда, особо жадные производители, подключали джойстики к приставке не внешним разъёмом, а внутренним или того хуже – припаивали к плате приставке. Но и из этой ситуации я предлагаю для Вас выход. Разбираем свой джойстик. На фотографиях ниже, я обвёл нужные нам контакты кружечками соответственных цветов. Эти две фотографии, по сути, один и тот же джойстик с разных сторон для наглядности. Две фотографии ниже можно увеличить кликнув по ним. Далее прозваниваем эти контакты с другими концами провода и соединяем по любой из схем выше, что и в случае с путевым разъемом. Только в этот раз у нас не разъём, а заранее промаркированные провода.

Подключаем джойстик от приставки Денди к параллельному порту компьютера LPT своими руками

Подключаем джойстик от приставки Денди к параллельному порту компьютера LPT своими руками

Это все что касается аппаратной части. Читайте вторую часть – программную или как правильно настроить драйвера для дендевских джойстиков [появится в ближайшие дни].

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

NES И SNES имеют разные разъёмы. Также, есть очень много аналогов NES (среди них наш российский Денди, Кенга и д.р.), и поскольку компания Nintendo использовала патентованные разъёмы для своих фирменных машин, производители клонов не могли повторять их и использовали стандартные разъёмы D-Cannon. Во всяком случае, если у вас есть gamepad, и у него есть кнопки A, B, Turbo A, Турбо B, Select и Begin (последних двух может и не быть) и связывается через 5 проводов, тогда это или NES или аналог NES и будет работать если Вы все сделаете правильно. SNES gamepads также используют 5 проводов, но имеют больше кнопок, поэтому подключаются несколько иначе. Более подробно можете узнать через поисковики.

1. Вопрос: Можно ли будет таким джойстиком играть в обычные РС-шные игры?
Ответ: Да, конечно, если в играх есть поддержка геймпада.

2. Вопрос: Вы сами подключали джойстик?
Ответ: Да, подключал, даже 2 пары приходилось делать, они у меня отлично работают!

3. Вопрос: Какой драйвер мне использовать?
Ответ: Самым универсальным драйвером является PPJoy. Для сеговского 6-ти кнопочного джоя рекомендуется XYZModeB, по той причине, что XYZModeB устраняет произвольные нажатия в этом джойстике.

4. Вопрос: Существуют ли другие схемы пайки?
Ответ: Существуют и другие схемы. Их можно найти, например, в комплекте драйвера PPJoy или через поисковик.

5. Вопрос: Подскажите, какие мне выбрать диоды?
Ответ: Подойдут практически любые малогабаритные диоды. В идеале следует применять диоды Шоттки (зайдите в магазин радиодеталей, там подскажут), но они достаточно дорогие.

6. Вопрос: А зачем вообще нужны диоды?
Ответ: Диоды нужны для выпрямления напряжения с нескольких пинов LPT-порта. Это, в свою очередь, необходимо для запитки джойстика.

7. Вопрос: Можно ли обойтись без диодов?
Ответ: Да, можно. В этом случае придётся применять отдельный блок питания (4,5 – 5,0 В). При этом Вы исключаете из схемы пайки блок диодов (то есть эти пины вообще не должны быть задействованы), и вместо него берете напряжение с контакта «плюс» внешнего блока питания, а контакт «минус» замыкаете на «землю» параллельного порта (пины с 18-го по 25-й).
Предупрежу сразу – внешний источник питания более надёжен в плане обеспечения питания джойстика, однако риск спалить ЛПТ-порт в случае неправильного подключения повышается в разы. Поэтому я этот способ рекомендую только тем, у кого работа джойстика связана с явной нестабильностью (а также для подключения двух и более джойстиков).
Исключительным способом подключения без диодов и внешнего питания является схема Сега-Линукс из пакета PPJoy.

8. Вопрос: Я все спаял и у меня ни хрена не работает (варианты: работают не все кнопки, кнопки работают неправильно).
Ответ: Для начала напишите какой джойстик подключаете, какая у Вас операционная система, каким драйвером пользуетесь и по какой схеме паяете. Как показывает практика, в 70% случаев причиной данной проблемы является неправильная спайка. Поэтому ещё раз (хоть в десятый, хоть в двадцатый раз) проверьте правильность спайки и ориентацию диодов. Если Вы уверены на 100%, что все спаяно правильно – пишите в комментариях или в форум.

Выше Вам представлена 1 часть данной статьи. Если Вы уже с ней ознакомились можете прочитать как программно подключить джойстик Денди к компьютеру во второй части данной статьи.

Джойстик для денди на stm32

Насмотрелся я тут в ютубе как народ играет на старых, добрых приставках из моего детства, а именно на Dendy. И меня так торкнула ностальгия, что я решил тоже поиграть. Встал вопрос. Купить приставку, коих сейчас огромное количество. Но что делать с играми. Нужно покупать кучу картриджей. Можно конечно заказать многоигровку у Кластера, но это опять покупать. Короче я остановился на эмуляторе для ПК. К тому же в любом случае нужен выход видео изображения, а монитор под это подходит как раз кстати. Скачал эмулятор, ромы игр, запустил и поиграв с пол часа ощутил себя тапером немого кино. Ну невозможно играть в Dendyвские игры с клавиатурой. Короче решил я изобразить джойстик для Dendy. Черт возьми, я же собрал себе 3D принтер, нужно его эксплуатировать))) А если честно, то меня на эту идею подбил Кластер со своим видео “Пока все играют 2”. Ближе к концу он подключил джойстик к компу по USB, а потом для приставки собрал свой джойстик. Зы, посмотрев я решил скрестить эти два девайса))) А именно сделать свой джойстик для ПК через USB. И так поехали.

Для этого нам понадобится МК. У меня с USB есть куча STM32, а именно возьмем народный STM32F103C8T6. Так, Кластер использовал библиотеку LUFA с готовым функционалом джойстика. А я не хочу быть копирастом и нужно изобрести что-нибудь другое. Из HID устройств, коими и является джойстик, остаются еще мышь и клавиатура. Ну мышь соответственно не подойдет, а вот USB клавиатура как раз. Просто нужно прикрутить к каждой кнопке джойстика свою клавишу, а в эмуляторе прописать их в настройках. Первое с чего нужно начать, так это узнать как работает USB клавиатура. Роем интернет. Час, два, три. Вашуж мать. Про PS/2 протокол написано столько, что можно энциклопедию по ней написать, а вот про USB молчек. Но все таки я нарыл. Официальная документация на Device Class Definition for Human Interface Devices (HID). Правда на басурманском но ничего. Я растолкую что к чему.

Протокол работы USB клавиатуры.

Передача данных происходит пакетно, то есть сама клавиатура ничего передать не может по причине того что она является девайсом. Девайс не может начать передавать данные сам, он лишь подготавливает их заранее, а когда хост(ПК) его об этом попросит, то девайс эти данные отдает. Из чего состоит пакет для передачи хосту. В пакете присутствует 8 байт. Первый байт отвечает за кнопки Shift, Alt, Ctrl, причем как за левые так и за правые. Второй байт передает что-то для клавиатуры OEM. Я честно не знаю что это и в доке пишут что для простой клавиатуры в этом байте должен быть всегда 0. Оставшиеся 6 байт передают код шести нажатых клавиш. Да, да, можно одновременно передавать 6 символов одновременно(

Правда не все клавиатуры так делают, а лишь передают последний зажатый символ

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

Теперь разрабатываем алгоритм. Пока хост занимается своими делами, нам нужно посмотреть на все кнопки джойстика и записать в пакет коды нажатых кнопок. Перед началом записи обязательно нужно обнулить пакет. После сборки данных о кнопках и записи всего этого добра, передаем эти данные хосту по его просьбе. А теперь самое интересное. Хост не может опрашивать клавиатуру как приведение, он должен это дело проворачивать в определенное время. А если быть точнее, то через какой-то оговоренный промежуток времени. Вот тут и начинаются шаманства с USB. Разбираться доскональна как работает USB я не горел желанием. Будет время почитаю, а вот чтобы срубиться с HID устройством мне пришлось полистать Агурова и почитать несколько статей и форумов. Здесь я расскажу лишь о том как я это понял и если что не так ляпну знающих попрошу меня поправить. И так USB.

На пальцах. С учетом того что шина является универсальной, то она понятия не имеет кто к ней подключился. Есть только физический уровень, который говорит хосту что подрубилось устройство. С учетом того что только хост может рулить передачей данных, то ему после подключения нового девайса не терпится узнать кто это. Для этого хост спрашивает у девайса данные о себе. Все запросы хоста к девайсу называются дескрипторы. Дескриптор это обычный массив с определенными данными в своих ячейках. Разбирать все дескрипторы я не буду, это нудно и если кому интересно почитайте Агурова. Здесь рассмотрим только самое важное. После обнаружения девайса хост просит ему представится, для этого девайс кидает хосту дескриптор устройства. Хост читает и начинает вникать кто это. Затем хост просит рассказать о конфиге девайса, на что девайс передает ему дескриптор конфигурации. Хост получив его определяет кто же это и подгружает необходимый драйвер. А затем определившись с девайсом, хост просит дескриптор репорта. Так как у нас HID устройство, а именно клавиатура, то дескриптор репорта один. А теперь давайте начнем программить. Открываем STM32CubeMX и.

Включаем USB устройства, выбираем Custom Human Interfase Device. Подрубаем внешний кварц и настраиваем нужное количество ножек на вход для кнопок. Я выбирал ножки таким образом, чтобы было легче разводить плату. Не забываем настроить ноги таким образом, чтобы они были подтянуты внутреннем резистором к земле. Мне влом было паять 10 подтягивающих резисторов)))

Теперь нам нужно настроить тактирование таким образом, чтобы шина на которой висит USB тактировалась на частоте 48МГц.

Все. Сохраняемся и генерим проект для IAR.

Умная программа сгенерит нам код, который нужно будет по минимуму допилить. Начнем с дескрипторов девайса. Расскажем кто он и что он. Для этого открываем файл usbd_customhid.c.

И находим строчку вида За ней будет куча текста. Боятся не надо, нам нужна будет всего лишь одна строка. Находим строку вида: И меняем 0х00 на 0х01, таким образом сказав что мы будем клавиатурой.

Затем нам нужно заполнить дескриптор репорта. Для этого топаем в файл usbd_custom_hid_if.c

и находим строку вида: Там будет всего пару байт. Удаляем все и заменяем вот на это. Откуда я это взял. Есть вот такая замечательная программа.

У которой есть в загашнике дескрипторы для самых распространенных устройств. Теперь после заполнения дескриптора, нам нужно в дефайне указать что теперь наш дескриптор состоит не из 2 байт, а из 63. Для этого переходим в файл usbd_conf.h

И в строке Двойку меняем на 63.

Все. Теперь мы можем общаться с хостом как клавиатура. Если скомпилить этот проект и загрузить в МК, то компьютер определит наш девайс как HID устройство, а именно как клавиатура.

Я специально PID задал как E2E4 чтобы легче было ее найти.)))

Топаем в main. В самом начале подключим файл с функционалом для общения с хостом. Затем ниже напишем. Что здесь написано. Для начала создаем псевдонимы функций чтения состояния каждой кнопки. Это для удобства, ведь понять BUTTON_UP проще чем HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3), согласитесь.
Теперь куда бы мы не записали псевдоним, на этом месте будет функция чтения бита порта, а именно возвращенной ей значение 1 или 0. Затем создаем псевдоним нажатой или не нажатой кнопки. Это нужно будет для функции которая будет собирать пакет перед отправкой. Далее идет массив байт с кодами кнопок. Нужно усечь, что клавиатура не возвращает ASCII код символа, она возвращает код нажатой клавиши и ей пофиг что на данной клавише нацарапано, хоть китайский иероглиф. Последним идет массив из 8 байт. Это как раз пакет для передачи хосту. На этом немного обострим внимание. Пакет хосту передается от первого элемента массива к последнему, поэтому первый элемент будет нести в себе шифты, альты и всю муру доп кнопок, а конкретно у нас нули, второй элемент всегда ноль, а с третьего до восьмого наши кнопки.

Далее идут две строки для работы с функциями USB. Первая нужна для передачи указателя на структуру USB Device handle, а вторая нужна для получения состояния прочитанного пакета. Далее инициализируем функцию для записи или удаления нажатой кнопки. В самом низу после функции main пишем тело нашей функции. В качестве аргументов функция получает код клавиши и состояние нажата или нет.
Помните #define BUTTON_ON 1

Следующий шаг это опрос клавиш и обработка их состояния. Делаем это все в бесконечном цикле while(1)<>. Здесь мы по очереди проверяем нажата ли клавиша или нет и в зависимости от ее состояния записываем в пакет для передачи. Проверив все кнопки отправляем пакет хосту. Но вот здесь немного по подробнее. Наш МК работает на большой скорости и проверку состояния клавиш и сбор пакета для отправки он делает очень быстро, а с учетм того что период опроса у нас в дескрипторе прописан 20мс, то мы успеем поменять данные о кнопках между запросами. Чтобы такого не случилось функция USBD_CUSTOM_HID_SendReport() может нам вернуть одно из трех значений, а именно Все хорошо, Я занята и Все упало. Из этого следует что можно просто в бесконечном цикле ждать ответа Все хорошо, а потом заново проверять кнопки. Так конечно делать не правильно, в данном цикле нужно еще проверять на Все упало или на отсутсвие занятости, но на практике за все время передача данных не разу не упала. Так что все это заливаем в МК и радуемся.

Вот принципиальная схема.

Страшно))) Это размеры для проектирования 3D модели корпуса))) А так на плате всего 6 перемычек и нижняя сторона сплошная земля.

Подключаем джойстик от “Денди” к компьютеру

Ниже Вам представлена 1 часть данной статьи. Если Вы уже с ней ознакомились можете прочитать как программно подключить джойстик Денди к компьютеру во второй части данной статьи.

1) Джойстик (подключить можно до пяти штук)

3) 5 дидов (не особо мощных)

4) Разъем “папа” LPT порта (он же параллельный, он же от принтера, он же DB25M)

5) Разъем “папа” DB15M для разъема джойстика

Подключаем джойстик от “Денди” к компьютеру

Подключаем джойстик от “Денди” к компьютеру

Ораньжевые контакты – с них питаем джойстик (около 5В). Обязательно только через диоды, иначе можно спалить LPT контроллер на материнской плате или всю мат. плату.

Голубой – Управляющий контакт (10 контакт для первого джойстика, 11 – для второго, 12 – для третьего, 13 – для четвертого, 15 – для пятого). Имейте В Виду, что штырек 14 не использован, так как он не является входом параллельного порта.

Подключаем джойстик от “Денди” к компьютеру

В виду того, что клонов приставки NES (Денди) было превеликое множество поэтому и разъемов подключения джойстика к приставке было несколько. Цвета контактов обозначены соответственно цветам в Схеме разъема LPT. Отличает лишь замена ораньжевых контактов одним красным, т.к. питание берется с 5-ти контактов, а подается на джойстик через один. Представлено 3 наиболее распространненых:

Для этих, наиболее распрострранненых разъемов привожу соответственно три аналогичные схемы:

Питать джойстик надо через диоды. Что это такое? Это, грубо говоря, выпрямители тока, т.е. они в одну сторону ток пропускают, а в другую нет. Таким образом, с LPT порта ток проходит, а вернуться на него через эти контакты диоды-то и не дают.Ток должен проходить от LPT к джойстику, а не как не наоборот.

Подключаем джойстик от “Денди” к компьютеру

Таким образом, на диодах есть маркировка, и их следует припаивать полосочкой вверх, как на рисунке ниже. Просто припаиваете проводки по схеме к LPT и все.

Подключаем джойстик от “Денди” к компьютеру

Вторым важным моментом является подключение двух и более джойстиков. NES/SNES джойстики имеет линию Data, выше она названа управляющим контактом и на схемах обозначена голубым цветом. Она уникальна для каждого устройства (если их у Вас несколько) и каждый геймпад имеет свой собственный штырек Data.

(pin 10) —–> Pad 1 data – для первого геймпада

(pin 11) —–> Pad 2 data – для второго геймпада

(pin 12) —–> Pad 3 data – т.д.

(pin 13) —–> Pad 4 data

(pin 15) —–> Pad 5 data

Имейте В Виду, что штырек 14 не использован, так как он не является входом параллельного порта.

Остается только установить драйвера и настроить джойстик. В данной статье рассматривается софт PPJoy, как наиболее простой в настройке. Скачать его можно в конце статьи. Итак, проблем с установкой возникнуть не должно, иначе и браться за эту затею не стоит.

Вы можете найти в интернете множество различных драйверов для приставочных джойстиков, но я советую воспользоваться теми, что предлагаю я, а именно PPJoy. Если честно, то PPJoy отличается от других драйверов большим размером дистрибутива, но в комплекте Вы получите еще несколько схем подключения различных приставочных джойстиков, FAQ по подключению и настройке, правда все на заморском языке. Если Вы согласны с моим выбором драйвера, то скачиваем дистрибутив драйвера PPJoy082 [1.76 MB]. Если верить мануалу, то подходит для ОС: Win9x/Me/NT/XP/2k. Разархивируем в любое удобное место и запускаем Setup.exe. На экране появляется такое окошко по которому надо кликнуть:

Подключаем джойстик от “Денди” к компьютеру

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

После установки в меню “Пуск” появится папка “Parallel Port Joystick”, а в ней несколько ярлыков. Нас интересует “Configure Joysticks” – его и запускаем. На экране появляется окно утилиты конфигурирования джойстиков. В нем нажимаем кнопку “Add”.

Видим окно конфигурирования нового джойстика. В нем выставляем значения, как приведено на рисунке. Не смущайтесь в выборе типа интерфейса, с ОС Линукс в нашем случае это не связано.

Выставив правильно все значения, жмем на кнопку “Add”. Попадаем в предыдущее окно. Если у нас джойстик один, можно смело жать кнопку “Done”. Если же нам нужно настроить и второй джойстик, то заново жмем “Add”, появляется уже знакомый диалог, правда выбор наш уже несколько ограничен, но значения нужно будет выставить так же как и на картинке выше. Исключение лишь в предпоследней строке, т.е. номер контроллера теперь указываем не 1, а 2 или более в зависимости от того какой джойстик по счету мы подключаем. Все это справедливо если вы правильно руководствовались частью первой этой статьи про аппаратное подключение. Особо важно соответственное подключение data выхода джойстика к LPT порту, иначе могут быть просто “несостыковки”.

Что ж, пол дела сделано, осталось проверить работоспособность джойстика.Заходим в “Панель управления” и запускаем ярлык “Игровые устройства”. Выбираем интересующий нас джойстик и жмем по кнопке “Свойства”. Появляется окно свойств. Во вкладке “Проверка” мы можем проверить работает ли наш джойстик. В момент, когда джойстик никто не трогает и ни одна из его кнопок не зажата крестик осей будет по центру белой области, а изображения кнопок будут все одинаково темно-красными.

Подключаем джойстик от “Денди” к компьютеру

Если мы правильно подключили джойстик и будем нажимать кнопки, то реакция крестика и изображения кнопок будут соответственные.Если у Вас тест проверки пройден с положительным результатом, то поздравляю Вас. Вы смогли сами своими руками подключить и настроить джойстик от приставки “Денди” к компьютеру через LPT порт.

В интернете можно найти множество различных эмуляторов “Денди”. Каждый из них имеет свои плюсы и минусы. Некоторые ромы на одних эмуляторах работают, а на других могут отказать.

Вот схема подключения сеговского джойстика к компьютеру

Подключаем джойстик от “Денди” к компьютеру

Эта схема является одной из лучших, и + она не требует диодов, собрать по этой схеме очень легко. Удачи.

Подключаем джойстик от «Денди» к компьютеру своими руками: супер-решение

Подключение джойстиков от игровых приставок Денди/ Dendy к компьютеру
Сейчас я Вам скажу довольно неожиданную вещь. ИГРАТЬ НА КЛАВИАТУРЕ В ИГРЫ НЕ УДОБНО. Она просто не приспособлена для этого, Представьте себе автомобиль, у которого вместо руля пишущая машинка . Клавиатура громоздка, далеко от компьютера ее не утащишь. А Вы пробовали играть вдвоем на одной клавиатуре? В Mortal Combat, например, где клавиши Выходят из строя уже на первом месяце и ваш соперник норовит нажать побольше клавиш одновременно, чтобы заблокировать ваши движения и не дать провернуть комбо? А играть втроем-вчетвером? Это уже совсем невозможно. Хотя бы потому, что тесно и соперник норовит толкнуть Вас в бок.

Уверен многие видели в магазинах джойстики для компа, к примеру от Sony PlayStation.
К сожалению они стоят очень дорого, но почемубы не сделать такой самим? Существует вполне реальная возможность играть таким геймпадом/джойстиком на PC-совместимом компьютере, даже не самом мощном. Большинство игр и программ не смогут отличить вашего устройства от фирменного джойстика за несколько $100. (почему то считается раз какой прибамбас к компьютеру, то обязательно стоить должен баснословные деньги) Самая фишка в том, что этот джойстик можно использовать в любой игре, просто при назначении клавиш назначайте их на кнопки джойстика.
Вобще GamePad – устройство очень похожее на аналоговый джойстик. Различие между типичным джойстиком и GamePadом – в характеристиках оси. Джойстики обычно имеют две оси – X и Y. Непрерывное движения рычага вдоль этих осей с помощью двух потенциометров преобраются в аналогоВые электрические сигналы, которые потом с помощью АЦП преобразуются в цифроВые, на основании которых Вычиисляются переменные X и Y. GamePad же имеет не-пропорциональные величине отклонения от центра величины X и Y для девяти позиций (включая центр), он гораздо проще по конструкции, и, следовательно, болеее надежен.
Конструкция очень простая. Просто дважды убедитесь прежде чем проверять сделанный вами интерфейс, убедитесь что все провода припаяны правильно, и, что никакие оголенные провода не касаются чего-нибудь. Я сильно рекомендую использовать корпус для этих интерфейсов, чтобы уменьшить риск короткого замыкания.
Начнем с джойстика для Dendy (NES).
Если у вас есть gamepad, и у него есть кнопки A, B, Turbo A, Турбо B, Select и Begin (последних двух может и не быть, настоятельно рекомендую такие не брать) и связывается через 5 проводов, тогда это или NES или аналог NES и будет работать если Вы все сделаете правильно.
Однако пора приступась к делу. Все, что вам понадобится – это разъем LPT порта (он же паралельный, он же от принтера), паяльник, 5 1N914 или 1N4148 диодов, ну и, собственно, сам джойстик. Приступим.

Как подключить джойстик от приставки Денди/Dendy к компьютеру

Вот сам разъем джойстика (правда похож на СОМ)

Как подключить джойстик от приставки Денди/Dendy к компьютеру

Спаивается все по схеме, если хотите подключить два джойстика, то все провода припаиваются также кроме 8 и 7 контакты на NES, их надо припаять к 11 и 12 контакту на LPT’.

Как подключить джойстик от приставки Денди/Dendy к компьютеру

Чтобы припаять провода по схеме надо вскрывать разъем, я же предлагаю сделать все гораздо проще. Можно просто сделать своеобразный удлинитель переходник.
Помимо LPT нам понадобится еще и СОМ разьем(папа)

Как подключить джойстик от приставки Денди/Dendy к компьютеру

Еще очень важная деталь. На диодах есть маркировка, их следует припаивть полосочкой вверх. Просто припаиваете проводки по схеме к LPT и все.

Как подключить джойстик от приставки Денди/Dendy к компьютеру

Получается очень даже

Как подключить джойстик от приставки Денди/Dendy к компьютеру

Как подключить джойстик от приставки Денди/Dendy к компьютеру

Как его настроить я расскажу в конце статьи.
Чтобы получить максимальное удовольствие я скача эмулятор Dendy. Вкратце что такое эмулятор. Такая прога которая полностью эмулирует какую либо игровую приставку, игры для нее также подгружаются отдельно, любую игру можно качнуть в нете.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: