Привет уважаемые участники форума! Работаю над одним проектом. Есть проблемы с программой к моему девайсу. Может, кто подскажет. Хочу доработать джойстик (геймпад) и превратить его в игровое ружье, автомат или пистолет (корпус пока не важен) для игры в контрстрайк и подобные. Принцип такой.,, вверху по центру монитора закрепляется инфракрасный светодиод – маркер который светит в сторону игрока. Игрок держит в руке автомат со встроенной платой геймпада и прицеливается в сторону изображения на мониторе. В дуле автомата находится миниатюрная CMOS - видеокамера от систем видеонаблюдения. На объектив камеры надет инфракрасный фильтр, отсеивающий видимый спектр. Поэтому камера «видит» только светящуюся точку от ИК светодиода– маркера. На выходе видеокамеры формируется видеосигнал, где в строках каждого полукадрового поля присутствует только сигнал изображения от ИК - светодиода маркера, строчные синхроимпульсы и кадровые гасящие импульсы. Если камеру перемещать относительно ИК – маркера по вертикали (по оси - Y), то импульсы сигнала изображения «сдвигаются» по строкам в четных и нечетных полукадровых полях относительно кадровых гасящих синхроимпульсов видеосигнала. При изменении положения камеры по горизонтали (по оси - X), видеоимпульсы смещаются по строке (по отношению к спаду строчных синхроимпульсов). Следовательно, определяя положение видеоимпульса маркера в каждом полукадровом поле и строках, можно простыми методами определять координаты объекта слежения по двум осям координат (Х и Y). Далее…
В системе слежения за объектом по оси «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ист. пит.
Если уж есть камера, то думаю, на много проще бы было обрабатывать ее изображение, сравнивать с изображением на эране, и получать координату уже в системе монитора.
Нет ничего невзоможного. Я так понял, на выходе устройства будут координаты в системе пзс матрицы, а не экрана? Нужно подумать как их правильно преобразовать в координаты монитора с учетом разных возможных разрешений.
Можно еще придумать систему и ик фотодиодов, расположенных по сфере либо плоскости, и по разности освещенности получать координаты.
Можно еще например разместить четыре ик светодиода, по углам монитора, промодулировать каждый своим сигналом, а приемник, на основе уровней сигналов, будет их переводить в координаты.
Вариант то автор темы выбрал, он просит помочь с программированием (если я правильно понял), т. е. с выделением координат появления пятна от ИК-излучателя на матрице камеры. По-моему, проект слишком сложный чтобы на форуме вам смогли помочь.
Автор, может лучше вместо теории напишете что уже самому удалось сделать? Конкретизируйте вашу проблему, что вы от участников форума то хотите?
Да, я конкретизирую свой вопрос, но перед этим хочу объяснить принцип работы данного устройства.
Для управления прицелом оружия виртуального игрока можно использовать правый джойстик любого геймпада. Джойстик соответственно двигает ползунки двух резисторов расположенных на крестовине. Двигая джойстик вперед -назад , прицел игрока поднимается вверх - вниз. Перемещая джойстик влево-вправо, прицел перемещается влево вправо (соответственно). С помощью этих резисторов на входах платы геймпада изменяется уровень постоянного напряжения в диапазоне от 0 до 3 В. Поэтому получается следующая картина... двигаем джойстик по оси- Y вперед, прицел на экране поднимается вверх (напряжение на входе Y геймпада увеличивается до 3 В). Двигаем джойстик по оси- Y назад, прицел на экране опускается вниз (напряжение на входе Y гемпада уменьшается до 0 В. Двигаем джойстик по оси- Х вправо, прицел на экране смещается вправо (напряжение на входе Х геймпада уменьшается до 0 В). Двигаем джойстик по оси- Х влево, прицел на экране смещается влево (напряжение на входе Х геймпада увеличивается до 3 В). Для остановки перемещения прицела надо отпустить джойстик и он возвращается в центральное положение. При этом напряжения на входах X и Y геймпада равно по 1.5 В.
Теперь я выпаиваю резисторы правого джойстика и подаю на освободившиеся входы X и Y платы геймпада управляющие напряжения от моего датчика с видеокамерой. Получается следующее… например я начинаю поднимать ствол ружья с камерой вверх относительно ИК – маркера, при этом на выходе моего датчика формируется напряжение 3 В и плата геймпада распознает его, как сигнал управления – «перемещение вверх». Как только я останавливаю движение оружия, на выходе датчика тут же формируется напряжение 1, 5 В. Для геймпада это сигнал «стоп». Если опускать дуло оружия вниз на выходе формируется уровень – 0 В. Остановил движение – опять формируется 1,5 В (стоп). Аналогичные сигналы формируются по оси перемещения –Х.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения