Страница 1 из 1

Разработка приставки для игрового джойстика - геймпада.

Добавлено: Вт янв 22, 2013 19:10:30
МКС
Привет уважаемые участники форума!
Работаю над одним проектом. Есть проблемы с программой к моему девайсу. Может, кто подскажет. Хочу доработать джойстик (геймпад) и превратить его в игровое ружье, автомат или пистолет (корпус пока не важен) для игры в контрстрайк и подобные. Принцип такой.,, вверху по центру монитора закрепляется инфракрасный светодиод – маркер который светит в сторону игрока. Игрок держит в руке автомат со встроенной платой геймпада и прицеливается в сторону изображения на мониторе. В дуле автомата находится миниатюрная CMOS - видеокамера от систем видеонаблюдения.
На объектив камеры надет инфракрасный фильтр, отсеивающий видимый спектр. Поэтому камера «видит» только светящуюся точку от ИК светодиода– маркера. На выходе видеокамеры формируется видеосигнал, где в строках каждого полукадрового поля присутствует только сигнал изображения от ИК - светодиода маркера, строчные синхроимпульсы и кадровые гасящие импульсы. Если камеру перемещать относительно ИК – маркера по вертикали (по оси - Y), то импульсы сигнала изображения «сдвигаются» по строкам в четных и нечетных полукадровых полях относительно кадровых гасящих синхроимпульсов видеосигнала.
При изменении положения камеры по горизонтали (по оси - X), видеоимпульсы смещаются по строке (по отношению к спаду строчных синхроимпульсов). Следовательно, определяя положение видеоимпульса маркера в каждом полукадровом поле и строках, можно простыми методами определять координаты объекта слежения по двум осям координат (Х и Y). Далее…

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Вт янв 22, 2013 19:32:36
МКС
В системе слежения за объектом по оси «Y» можно использовать счетчик импульсов. На его тактовый вход будут поступать строчные синхроимпульсы от видеокамеры (известно, что при чересстрочной развертке в каждом полукадре укладывается целое число строк плюс половина строки (625 : 2 = 312,5)). Сброс (обнуление) счетчика осуществляется кадровыми синхроимпульсами, выделенными в селекторе синхроимпульсов видеосигнала. Таким образом, пачки прямоугольных импульсов в количестве Nимп. = 313 (сформированные полукадровыми полями) видеосигнала подсчитываются счетчиком импульсов.
Информация о состоянии счетчика перезаписывается в регистр. Запись числа в регистр происходит под действием фронта импульса, сформированного видеосигналом изображения от маркера. Далее информация с регистра по шине данных передается на цифро-аналоговый преобразователь (ЦАП), преобразующий цифровой двоичный код в уровень постоянного напряжения. При перемещении маркера по вертикали (относительно видеокамеры), изменяется время появления видеоимпульса сигнала изображения относительно кадровых синхроимпульсов. Соответственно перезаписывается двоичное число в регистре и на выходе ЦАП изменяется уровень постоянного напряжения. Таким образом, при перемещении маркера по вертикали на выходе схемы – «Uy» будет пропорционально изменяться уровень постоянного напряжения в диапазоне от 0 до + Uист. пит.
Система слежения по оси «Х» содержит те же узлы, что и предложенная система по оси «Y» . Отличие состоит лишь в том, что на вход счетчика подаются прямоугольные импульсы от тактового генератора, работающего на частоте 5 МГц, а сброс осуществляется по спаду строчных синхроимпульсов. Известно, что период строчной развертки Тс.р. = 64 мкс. Период импульса опорного генератора - То.г. работающего на частоте 5 МГц можно рассчитать по формуле: F = 1 / T, отсюда Tо.г = 1 / FГц ; То.г = 1/ 50000000 Гц = 0,00000002 с = 0,2 мкс (То.г = 0,2 с). При этом за один период импульса строчной развертки – Тсси, счетчик будет успевать подсчитывать число импульсов равное: Nимп. = Тсси / То.г =
= 64мкс / 0,2мкс = 320. Этого вполне достаточно для определения координат положения объекта в зоне видимости камеры по горизонтали.
Аналогично, как и в системе слежения по оси координат – «Y», в данной схеме применяется регистр и ЦАП. При перемещении маркера в зоне видимости камеры по оси – «Х» (по горизонтали), на выходе – «Ux» ЦАП происходит пропорциональное изменение значение напряжения в диапазоне от 0 до + Uист. пит.

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Вт янв 22, 2013 19:43:52
blackx
Ну, удачи вам, что еще сказать. :)

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Вт янв 22, 2013 19:48:18
МКС
Структурная схема для пояснения принципа работы всего устройства

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Вт янв 22, 2013 20:11:41
zebrox
Если уж есть камера, то думаю, на много проще бы было обрабатывать ее изображение, сравнивать с изображением на эране, и получать координату уже в системе монитора.

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

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

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

Вариантов много.

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Вт янв 22, 2013 20:19:45
blackx
Вариант то автор темы выбрал, он просит помочь с программированием (если я правильно понял), т. е. с выделением координат появления пятна от ИК-излучателя на матрице камеры. По-моему, проект слишком сложный чтобы на форуме вам смогли помочь.

Автор, может лучше вместо теории напишете что уже самому удалось сделать? Конкретизируйте вашу проблему, что вы от участников форума то хотите?

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Вт янв 22, 2013 20:23:45
МКС
Да, я конкретизирую свой вопрос, но перед этим хочу объяснить принцип работы данного устройства.


Для управления прицелом оружия виртуального игрока можно использовать правый джойстик любого геймпада. Джойстик соответственно двигает ползунки двух резисторов расположенных на крестовине. Двигая джойстик вперед -назад , прицел игрока поднимается вверх - вниз. Перемещая джойстик влево-вправо, прицел перемещается влево вправо (соответственно). С помощью этих резисторов на входах платы геймпада изменяется уровень постоянного напряжения в диапазоне от 0 до 3 В. Поэтому получается следующая картина... двигаем джойстик по оси- Y вперед, прицел на экране поднимается вверх (напряжение на входе Y геймпада увеличивается до 3 В). Двигаем джойстик по оси- Y назад, прицел на экране опускается вниз (напряжение на входе Y гемпада уменьшается до 0 В. Двигаем джойстик по оси- Х вправо, прицел на экране смещается вправо (напряжение на входе Х геймпада уменьшается до 0 В). Двигаем джойстик по оси- Х влево, прицел на экране смещается влево (напряжение на входе Х геймпада увеличивается до 3 В). Для остановки перемещения прицела надо отпустить джойстик и он возвращается в центральное положение. При этом напряжения на входах X и Y геймпада равно по 1.5 В.

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Вт янв 22, 2013 20:43:42
МКС
Теперь я выпаиваю резисторы правого джойстика и подаю на освободившиеся входы X и Y платы геймпада управляющие напряжения от моего датчика с видеокамерой. Получается следующее… например я начинаю поднимать ствол ружья с камерой вверх относительно ИК – маркера, при этом на выходе моего датчика формируется напряжение 3 В и плата геймпада распознает его, как сигнал управления – «перемещение вверх». Как только я останавливаю движение оружия, на выходе датчика тут же формируется напряжение 1, 5 В. Для геймпада это сигнал «стоп». Если опускать дуло оружия вниз на выходе формируется уровень – 0 В. Остановил движение – опять формируется 1,5 В (стоп). Аналогичные сигналы формируются по оси перемещения –Х.

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Вт янв 22, 2013 20:49:50
МКС
Для реализации идеи я разработал схему блока обработки изображения и формирования необходимых сигналов управления на микроконтроллере ATmega 8.

Схема приведена ниже.

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Вт янв 22, 2013 20:54:00
МКС
Здесь исходник к управляющей программе. Частично все получается как задумал, но есть проблемы....

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Вт янв 22, 2013 21:04:29
oleg110592
сложновато, может лучше так: http://www.youtube.com/watch?v=9ispQtzxBzA

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Вт янв 22, 2013 21:09:16
МКС
oleg110592 писал(а):сложновато, может лучше так: http://www.youtube.com/watch?v=9ispQtzxBzA
Да, интересно. Я так понял внутри параллельно кнопкам подпаяны что -то типа контактов с грузиками или акселерометр.

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Вт янв 22, 2013 21:18:21
blackx
По-моему неудобно - ровно как и просто джойстиком управлять.

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Вт янв 22, 2013 22:10:49
vitalik_1984
Руки в конце игры отвалятся просто.Лучше уж тогда джойстик - ручка. Как в авиасимуляторах.

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Ср янв 23, 2013 09:04:11
oleg110592

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Ср янв 23, 2013 10:38:57
МКС
Но я работаю с оптическими вариантами датчиков. И сейчас модифицирую свой предыдущий проект.

Видео здесь: http://youtu.be/P--aJEUhbOc

Re: Разработка приставки для игрового джойстика - геймпада.

Добавлено: Ср янв 23, 2013 12:04:35
oleg110592
ну тогда тут можно купить недорого: http://www.comp2.ru/PRWebs/NP/index.htm#Use