Управление персонажем игрушки с велотренажёра

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Родился
Сообщения: 2
Зарегистрирован: Вс фев 06, 2011 04:54:35

Сообщение Max Brown »

Привет, All!
Будучи человеком весьма ленивым, решил, что лучший способ заставить себя заниматься-таки на своём тренажёре (а не вешать на него всякие тряпки) - это сделать занятия интересными.
С этой целью закрепил на тренажёре клаву и мышь, и решил, что пусть всё управление в 3D-бродилке будет как обычно, кроме клавиши "стрелка вверх" (она же - "вперёд").
То есть, озадачился сделать так, чтобы персонаж компьютерной игры двигался вперёд тогда и только тогда, когда я привожу в движение тренажёр.
Была разобрана старая клава, с её платы были выведены 2 проводка, замыкание которых, собственно, и даёт генерацию желанной стрелки вверх, и спаяна схема, к которой подключается штатный датчик движения на тренажёре. Датчик представляет собой обыкновенный геркон (легко выгорающий почему-то), мимо которого при движении проносится постоянный магнит, закреплённый на диске, вращаемом человеком в процессе. Схема подключения прилагается:
arrow_up.gif
Существующая схема
(35.66 КБ) 751 скачивание
Смысл схемы такой:
1. Когда геркон датчика движения замыкается реже 5 раз в секунду, схема генерирует одиночные "нажатия" стрелки вверх.
2. Когда диск вращается быстрее и геркон, соответственно, замыкается чаще, чем 5 раз в секунду, клавиша стрелка вверх "нажимается" и держится постоянно нажатой до тех пор, пока не сбавишь скорость, т.е., пока частота оборотов диска с магнитом не упадёт ниже 5 раз в секунду.
То есть, если двигаешься на тренажёре медленно, то персонаж идёт вперёд мелкими рывками, а если движешься быстро, то и персонаж бежит на максимальной скорости.

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

Собственно, вопрос: как это исправить?

Пробовал, чтобы исключить ток через напостоянку замкнутый геркон, подключать последовательно к геркону конденсатор С3 = 200 мкФ.
Результат: при разомкнутом герконе конденсатор не разряжается и когда он зарядится полностью, схема перестаёт работать до тех пор, пока конденсатор снова не разрядится.

Пробовал затем ускорить разрядку конденсатора, подключив параллельно ему резистор R3.
Результат: в зависимости от величины R3 - либо (при R3 > 2.3 KOм) C3 по-прежнему не успевает зарядиться для нового цикла, либо (при R3 < 2.3 KОм) ток спокойненько течёт себе по резистору и этого тока хватает, чтобы удерживать транзистор в достаточно открытом состоянии, чтобы реле было замкнуто.

Прошу помощи клуба.
Как вариант, можно полностью переделать схему, имея в виду, что она не спроста уже такая сложная: дело в хлипкости геркона, который начинает залипать при больших токах, а также в том, что два провода с платы клавиатуры необходимо замыкать именно релюхой, а не транзистором и не самим герконом, т.к. идёт по ним не постоянный ток, а серия очень быстрых импульсов, искажать которые нельзя.
Реклама
Держит паяльник хвостом
Сообщения: 986
Зарегистрирован: Ср июл 07, 2010 06:48:57

Сообщение Anode_Katode »

Скорее всего выходом будет контролировать не состояние геркона, скорость вращения педалей. Т.е. скорость передвижения персонажа должна быть пропорционально скорости велотренажера, педали стоят - кнопка "вперед" не нажата.
Для измерения частоты вращения подойдет любой энкодер (хотя бы от старой шариковой мышки), а все "мозги" можно соорудить на самом простом МК (на какой-нибудь тиньке). Сигнал с энкодера считывается в МК, который считает скорость и формирует на выходе пропорциональную частоту нажатия клавиши.
Кстати, таки образом можно соорудить и клавишу "назад". Педали крутятся в обратном направлении, а персонаж пятится назад. Правда для этого придется ставить еще один энкодер.
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Anode_Katode писал(а):Кстати, таки образом можно соорудить и клавишу "назад". Педали крутятся в обратном направлении, а персонаж пятится назад. Правда для этого придется ставить еще один энкодер.
Зачем еще один? С помощью энкодера легко определяется направление движения. К тому же, так как все равно без МК не обойтись, предлягаю сразу заделать PS/2. Тогда все получится достаточно просто, удобно и можно некоторые дополнительные крутилки/нажималки приделать.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Держит паяльник хвостом
Сообщения: 986
Зарегистрирован: Ср июл 07, 2010 06:48:57

Сообщение Anode_Katode »

РадиоЛоматель писал(а):Зачем еще один? С помощью энкодера легко определяется направление движения.
Да, можно и одним энкодером обойтись, тут я немного переборщил. Могу добавить лишь, что недавно видел в сети похожий проект. Там подключалась беговая дорожка (правда по USB), но суть примерно та же - контроллер формировал импульсы пропорционально скорости бега.
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 2
Зарегистрирован: Вс фев 06, 2011 04:54:35

Сообщение Max Brown »

Anode_Katode писал(а):Могу добавить лишь, что недавно видел в сети похожий проект. Там подключалась беговая дорожка (правда по USB), но суть примерно та же - контроллер формировал импульсы пропорционально скорости бега.
Ну так это мой проект и есть. Всё давно уже спаяно и работает (см. аттач)
Вложения
arrow_up.gif
(9.35 КБ) 626 скачиваний
Реклама
Ответить

Вернуться в «Интеграция с ПК»