Игровые манипуляторы

Для плат Arduino существуют модули аналоговых джойстиков. Как правило, имеющие ось X, Y и кнопку - ось Z. Джойстик позволяет более плавно и точно отслеживать степень отклонения от нулевой точки. А помимо удобства по сравнению с кнопками, это позволяет реализовывать более совершенные интерфейсы. К примеру, при изменении какого-либо значения в меню, можно написать программу таким образом, что чем сильнее отклонена ось джойстика, тем быстрее изменяется значение переменной. Например, нам необходимо изменить значение от 0 до 2000 с шагом в 1. Представьте, сколько раз вам потребовалось бы нажимать кнопку или писать специальный алгоритм, скажем при длительности нажатия больше 3 сек прибавлять изменять шаг на 10 или 100. А при использовании джойстика это можно реализовать намного проще.

Средняя цена на подобные модули колеблется в районе 1-2$ за модуль (с бесплатной доставкой в Россию). Поиск модулей в магазине AliExpress

Сами модули выглядят примерно так:

Не пугайтесь количеством выводов, это сделано для универсальности и удобства подключения. Контакты Vcc и GND между всеми тремя группами контактов соединены. Т.о. для подключения нужно 5 проводов: ось X, ось Y, кнопка Z, питание V cc и общий GND. Джойстики пассивные модули и не потребляют какую-либо энергию от платы Arduino. Питание V cc необходимо только для подтягивающих резисторов. Бывают модули без подтягивающих резисторов, в таком случае, необходимо вывод подключения кнопки подтянуть к +V cc через резистор 1-10 кОм.

Схема подключения к Arduino:

В программе, работать с джойстиком также очень просто:

#define axis_X 0 // Ось Х подключена к Analog 0 #define axis_Y 1 // Ось Y подключена к Analog 1 #define axis_Z 2 // Ось Z (кнопка джойстика) подключена к Digital 2 int value_X, value_Y, value_Z = 0; // Переменные для хранения значений осей void setup() { pinMode(axis_Z, INPUT); // Задаем как вход Serial.begin(9600); } void loop() { value_X = analogRead(axis_X); // Считываем аналоговое значение оси Х Serial.print("X:"); Serial.print(value_X, DEC); // Выводим значение в Serial Monitor value_Y = analogRead(axis_Y); // Считываем аналоговое значение оси Y Serial.print(" | Y:"); Serial.print(value_Y, DEC); // Выводим значение в Serial Monitor value_Z = digitalRead(axis_Z); // Считываем цифровое значение оси Z (кнопка) value_Z = value_Z ^ 1; // Инвертируем значение Serial.print(" | Z: "); Serial.println(value_Z, DEC); // Выводим значение в Serial Monitor delay(250); // Задержка 250 мс }

Как видно выше, в начале мы определяем входные пины для осей (define), а потом в главном цикле считываем значения с пинов и выводим их в Serial Monitor. И видим следующую картину:

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

#define axis_Y 1 // Ось Y подключена к Analog 1 #define axis_Z 2 // Ось Z (кнопка джойстика) подключена к Digital 2 int value, value_Y, value_Z = 0; // Переменные для хранения значений осей void setup() { pinMode(axis_Z, INPUT); // Задаем как вход Serial.begin(9600); } void loop() { value_Y = analogRead(axis_Y); // Считываем аналоговое значение оси Y if(value_Y >= 0 && value_Y < 100) value = value - 10; if(value_Y > 100 && value_Y < 300) value = value - 5; if(value_Y > 300 && value_Y < 520) value = value - 1; if(value_Y > 535 && value_Y < 700) value = value + 1; if(value_Y > 700 && value_Y < 900) value = value + 5; if(value_Y > 900) value = value + 10; value_Z = digitalRead(axis_Z); // Считываем цифровое значение оси Z (кнопка) if(value_Z == 0) value = 0; // Сброс значения Serial.println(value, DEC); // Выводим значение в Serial Monitor delay(500); // Задержка }

Инструкция

Джойстик - удобное и лёгкое в использовании устройство для передачи информации. Видов джойстиков по количеству степеней свободы, принципу считывания показаний и используемым технологиям существует большое количество. Джойстики чаще всего используются для управления движением каких-либо механизмов, управляемых моделей, роботов. Аналоговый джойстик, который мы сегодня рассмотрим, представляет собой ручку, закреплённую на шаровом шарнире с двумя взаимно перпендикулярными осями. При наклоне ручки, ось вращает подвижный контакт потенциометра, благодаря чему изменяется напряжение на его выходе. Также аналоговый джойстик имеет тактовую кнопку, которая срабатывает при вертикальном надавливании на ручку.

Подключим джойстик по приведённой схеме. Аналоговые выходы X и Y джойстика подключим к аналоговым входам A1 и A2 Arduino, выход кнопки SW - к цифровому входу 8. Питание джойстика осуществляется напряжением +5 В.

Для того чтобы наглядно увидеть, как работает джойстик, напишем такой скетч. Объявим пины, зададим им режимы работы. Обратите внимание, в процедуре setup() мы подали на вход switchPin высокий уровень. Этим мы включили встроенный подтягивающий резистор на этом порту. Если его не включить, то, когда кнопка джойстика не нажата, 8-ой порт Arduino будет висеть в воздухе и ловить наводки. Это повлечёт за собой нежелательные хаотичные ложные срабатывания.

В процедуре loop() мы постоянно опрашиваем состояние кнопки и отображаем его с помощью светодиода на выходе 13. Из-за того, что вход switchPin подтянут к питанию, светодиод постоянно горит, а при нажатии кнопки гаснет, а не наоборот.

Далее мы считываем показания двух потенциометров джойстика - выхода осей X и Y. Arduino имеет 10-разрядные АЦП, поэтому значения, снимаемые с джойстика, лежат в диапазоне от 0 до 1023. В среднем положении джойстика, как видно на иллюстрации, снимаются значения в районе 500 - примерно середина диапазона.

Обычно джойстик используют для управления электродвигателями. Но почему бы не использовать его, например, для управления яркостью светодиода? Давайте подключим по приведённой схеме RGB светодиод (или три обычных светодиода) к цифровым портам 9, 10 и 11 Arduino, не забывая, конечно, о резисторах.

Будем менять яркость соответствующих цветов при изменении положения джойстика по осям, как показано на рисунке. Из-за того, что джойстик может быть не точно отцентрирован производителем и иметь середину шкалы не на отметке 512, а от 490 до 525, то светодиод может слегка светиться даже когда джойстик находится в нейтральном положении. Если вы хотите, чтобы он был полностью выключен, то внесите в программу соответствующие поправки.

Ориентируясь на приведённую диаграмму, напишем скетч управления Arduino яркостью RGB светодиода с помощью джойстика.

Сначала объявим соответствие пинов и две переменные - ledOn и prevSw - для работы с кнопкой. В процедуре setup() назначим пинам функции и подключим к пину кнопки подтягивающий резистор командой digitalWrite(swPin, HIGH) .

В цикле loop() определяем нажатие кнопки джойстика. При нажатии на кнопку переключаем режимы работы между режимом "фонарика" и режимом "цветомузыки".

В режиме freeMode() управляем яркостью светодиодов с помощью наклона джойстика в разные стороны: чем сильнее наклон по оси, тем ярче светит соответствующий цвет. Причём преобразование значений берёт на себя функция map(значение, отНижнего, отВерхнего, кНижнему, кВерхнему) . Функция map() переносит измеренные значения (отНижнего, отВерхнего) по осям джойстика в желаемый диапазон яркости (кНижнему, кВерхнему). Можно то же самое сделать обычными арифметическими действиями, но такая запись существенно короче.

В режиме discoMode() три цвета попеременно набирают яркость и гаснут. Чтобы можно было выйти из цикла при нажатии кнопки, каждую итерацию проверяем, не была ли нажата кнопка.

«Будь проклят тот день, когда я сел за баранку этого пылесоса!» - говорил один из персонажей отечественного киношедевра. Именно это определение - «пылесос с баранкой» мне пришлось услышать в адрес мультимедийного компьютера с игровым штурвалом от одного из противников компьютерных игр. Ну что ж, как известно, все пользователи ПК делятся на противников и сторонников компьютерных игр. Как вы уже, наверное, догадались, настоящая публикация посвящена последним - тем, кто убежден, что история ПК связана с появлением не электронных таблиц или текстовых процессоров, а компьютерных игр, а также игровой периферии в виде джойстиков, геймпадов и рулей. О них и пойдет речь в данной статье.

Следует отметить, что интерфейс игрового порта (Gameport) появился очень давно - около 15 лет назад, вскоре после разработки первых IBM PC. Тогда компьютеры были мало приспособлены для игр и стоили больших денег, поэтому играть предпочитали на более дешевых видеоприставках. И тем не менее с появлением игрового порта началась борьба между видеоиграми и играми для ПК, которая продолжается и по сей день. И, надо заметить, компьютеры отвоевали значительное пространство. Появившись следом за первыми ПК, игровой порт до наших дней практически не претерпел изменений. Правда, он переместился на современные звуковые карты и имеет совмещенный с MIDI разъем.

Существуют и отдельные платы игровых портов, такие как Thrustmaster ACM Game Card, CH Gamecard CG3, PDPI L4 Gameport и др.

Достоинством игрового порта является поддержка как ранней DOS, так и Windows 2000, а к недостаткам следует отнести низкую для современных компьютеров скорость и ограниченные возможности, а также большую загрузку ЦП.

Для подключения джойстика через гейм-порт используется 15-штырьковый разъем. К одному гейм-порту можно подключить два двухкнопочных джойстика или один с четырьмя кнопками или с ручкой газа. При подключении такого джойстика используется часть входов, предназначенных для второго двухкнопочного. Если гейм-порт находится на звуковой плате, то к разъему можно подключать еще и MIDI-совместимые музыкальные инструменты.

Таким образом, современный игровой порт поддерживает следующие аналоговые сигналы: четыре оси (X1, Y1, X2, Y2) и четыре кнопки. Все, что выходит за эти рамки, поддерживается в цифровом виде при помощи специальных нестандартных интерфейсов.

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

Поэтому дальнейшее развитие игровой периферии связано с новым портом - USB, который не имеет всех вышеперечисленных проблем и позволяет использовать все четыре оси плавного регулирования и неограниченное количество кнопок.

Недостатком USB-порта является несовместимость с рядом ОС (DOS, Win3.1, ранние версии Win95, WinNT 4.0). Однако очевидно, что за этим портом будущее. Все модели 2001 года поддерживают USB, и только часть - USB + GamePort. Так что, если у вас нет USB-порта, для установки нового USB-джойстика придется поменять и сам компьютер.

Джойстики

Появление джойстиков датируется началом шестидесятых и обусловлено именно первыми компьютерными играми. Самый первый из них связывают с именами профессора Марвина Мински и студента Массачусетсского технологического института Стефена Рассела, больших поклонников компьютерных игр. По некоторым данным, название joystick существовало и ранее. До изобретения описываемого манипулятора этим термином обозначали самокрутки с марихуаной. Но современные джойстики достигли такой популярности, что о первоначальном значении слова сегодня никто даже не вспоминает.

Первые примитивные цифровые джойстики представляли собой стержень, укрепленный на крестовине, имеющей четыре электрических контакта. Чтобы выбрать одно из четырех направлений, нужно наклонить стержень в соответствующую сторону. При замыкании сразу двух контактов добавляются еще четыре направления (рис. 1).

Подобные джойстики существовали во времена компьютеров Amiga, Commodore 64 и MSX. Очевидно, что обеспечить плавное регулирование такой джойстик не мог и поэтому плохо подходил для авиасимуляторов. С тех пор джойстики изменились до неузнаваемости, и все же их отличительным признаком по-прежнему остается рукоятка определенного дизайна, закрепленная на стационарной платформе и наклоняющаяся во всех направлениях.

Аналоговые и цифровые джойстики

Cледующий этап развития джойстиков ознаменован появлением аналоговых устройств, которые имели в своей основе потенциометры (рис. 2) и могли осуществлять плавное регулирование. Эти устройства посылают в игровой порт аналоговый сигнал, который обрабатывается контроллером игрового порта и ЦП, а затем в цифровом виде используется программными интерфейсами. С тех пор, как джойстики стали обеспечивать плавное регулирование, их начали использовать для авиационных симуляторов.

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

Оптические и потенциометрические джойстики

Потенциометры имеют скользящие контакты, которые засоряются пылью и продуктами окисления, что ухудшает контакт и может приводить к проблемам управления. Этих недостатков лишены оптические джойстики, в которых вместо резисторов используются оптические сенсоры, менее подверженные износу. Несмотря на указанные преимущества оптических джойстиков, большинство производителей используют для считывания положения органов управления электрические потенциометры. В качестве примера оптических джойстиков можно привести джойстики серии Sidewinder от Microsoft.

Джойстик как манипулятор для авиасимуляторов

Оси плавного регулирования

Современные джойстики используются прежде всего в авиационных симуляторах и многие функции приобрели благодаря совершенствованию управления летным тренажером. Очевидно, что для полета в первую очередь необходимо плавное перемещение «вверх-вниз» и «вправо-влево». Именно эти функции и обеспечивали первые джойстики, при этом управление скоростью осуществлялось по принципу «есть ход - нет хода». Однако для успешного ведения воздушного боя этого недостаточно. Как «подкрасться и убежать» без гибкого управления скоростью? Так появилась еще одна функция плавного регулирования - контроллер тяги, или тротл . Контроллер тяги обычно располагается в виде специального колеса на корпусе рукоятки - или в виде переключаемого рычажка рядом с рукояткой. Второй способ реализации контроллера тяги позволяет видеть, в каком положении находится «газ», так играть удобнее. Тротл такого исполнения использован, например, в джойстике WingMan Force 3D от компании Logitech (рис. 3).

Однако тротл может быть выполнен и в виде самостоятельного отдельно вынесенного элемента, как, например, на одной из современных моделей Thrustmaster TopGun Afterburner (рис. 4). Идея раздельного исполнения рукоятки и тротла не нова. Известна более старая модель Quick Shot Squadron Commander, которая давно продается на российском рынке.

Таким образом, джойстик, как минимум, должен обеспечивать плавное регулирование по трем осям, при наличии педалей управления количество осей возрастает до четырех! При этом четвертая ось плавного регулирования (так называемый хвостовой руль (rudder), который в классической схеме выполняется в виде педалей), может управляться поворотом рукоятки вокруг своей оси (см. рис. 3). В этом случае в джойстике могут быть реализованы все четыре оси плавного регулирования.

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

Чаще всего присвоение и маркировка осей производятся следующим образом:

  • X1 (или Х) - наклон рукоятки вперед/назад (тангаж);
  • Y1 (или Y) - наклон рукоятки вправо/влево (крен);
  • Х2 (или rZ) - педали или поворот рукоятки вокруг своей оси (хвостовой руль);
  • Y2 (или Z) - вперед/назад тротл (тяга).

Функция поворота головы HAT switch

В реальности помимо возможностей управления пилот может осмотреться, с тем чтобы оценить обстановку справа и слева, не разворачивая при этом самолет. Для обеспечения такой возможности служит функция HAT switch 2 (см. рис. 3 , ), позволяющая дискретно менять направление взгляда пилота.

Переключатель видов (HAT switch) выполняет функцию дополнительного джойстика на основном джойстике. Но если основной джойстик поворачивает виртуальный самолет, то HAT-switch только меняет угол зрения. При этом HAT switch имеет только фиксированные положения, то есть смотреть можно в четырех или восьми направлениях. Это связано с тем, что дополнительное плавное позиционирование, наряду с плавным регулированием самим джойстиком, усложнило бы задачу управления. Впервые данная технология была разработана компаниями Thrustmaster и CH Products, и сегодня на рынке предлагается множество моделей, поддерживающих данную функцию от разных производителей. Продукция каждой компании (CH Products и Thrustmaster) имеет свои особенности реализации функции HAT switch. Отсюда и обозначения на джойстиках: ТМ-совместимый и СН-совместимый.

Функция обратной силовой связи Force Feedback

Еще одной функцией, заслуживающей внимания, является так называемая функция обратной силовой связи - Force Feedback.

Первым джойстиком с Force Feedback был джойстик CH Force FX Joystick от компании CH Products.

Если традиционная схема взаимодействия «джойстик - компьютер» является незамкнутой (рис. 6а), то есть сигнал, снимаемый с сенсора, подается в компьютер и таким образом осуществляется управление, то при наличии обратной связи (рис. 6б) система становится интерактивной. Сигнал от джойстика через сенсор направляется в контроллер обратной связи и в компьютер, а компьютер, в свою очередь, передает на контроллер управляющий сигнал, связанный с ходом выполнения игры. Сигнал от контроллера обратной связи передается на специальный электромотор, который связан ременной или другой (более жесткой) передачей с рукояткой джойстика.

Для реализации функции Force Feedback используется специальный API-I-Force, разработчиком которого является компания Immersion (http://www.immersion.com/).

В результате сотрудничества Immersion и Microsoft поддержка API-I-Force (I-Force 2.0) была введена в DirectX 5, наличие данной версии является минимальным условием для работы устройств с обратной силовой связью.

Технология Force Feedback позволяет моделировать разные типы эффектов, например толчки при попадании в самолет вражеского снаряда или отдачу от собственных выстрелов. По характеру дрожания джойстика можно понять: какой противник вас преследует; в вас стреляют из крупнокалиберного пулемета; в самолет попала ракета. Помимо этого может изменяться усилие, с которым играющему приходится перемещать рукоятку джойстика в зависимости от характеристик движения виртуальной машины. Обратная связь может моделировать поломки самолета, самой простой из которых является заклинивание рукоятки при падении машины, но возможны и более сложные эффекты, например, моделирование поведения штурвала в условиях отказа одного из двигателей, тряски при повреждениях, потери винта и т.п.

На сегодняшний день Force Feedback является единственной интерактивной формой взаимодействия играющего с виртуальной машиной. Многие компании, такие как Logitech, Microsoft, Genius, InterAct, сегодня переняли данную технологию и выпускают манипуляторы с обратной связью. Естественно, появилось и большое количество игр с поддержкой технологии Force Feedback. Например такие симуляторы, как ACES: The X-Fighters (издатель Sierra On-Line, разработчик Dynamix), F22 Air Dominance Fighter (издатель Ocean/Infograms, разработчик Digital Image Design), Flight Unlimited II (издатель Eidos, разработчик Looking Glass). В принципе, если игра работает под DirectX 6.0 и выше, то она, как правило, поддерживает и обратную связь.

Типичным примером джойстика с обратной связью является модель SideWinder Force Feedback 2 (рис. 7). Данное устройство можно использовать как для авиа-, так и для автосимуляторов.

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

Более подробную информацию о ForceFeedback можно найти по адресу http://www.immersion.com/ .

В принципе, технология силовой обратной связи применяется не только в игровых манипуляторах - именно по этому принципу построены системы, которые позволяют «потрогать» виртуальные объекты, прочитать об этом можно в статье «Запах, форма, вкус и цвет через Интернет» (КомпьютерПресс № 3’2001, стр. 50).

Выпуском джойстиков сегодня занимаются очень многие компании, в качестве крупнейших мировых производителей можно назвать ThrustMaster, CH Products, Advanced Gravis, Logitech, Microsoft, ACT Laboratories, которые не только обеспечивают определенную долю рынка, но и привносят все новые идеи в развитие данных устройств.

Найти каталог современных джойстиков можно по адресу http://www.igalax.ru/ или на нашем CD-ROM.

Рули

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

Обычно функции управления присваиваются осям плавного регулирования следующим образом:

  • X1 - руль вправо-влево;
  • Y1 - газ-тормоз или

X1 - руль вправо-влево;

  • Y1 - газ;
  • X2 - тормоз.

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

В дорогих моделях предусмотрена такая функция, как «раздельные педали». Раздельные педали «газ» и «тормоз» не взаимоуравновешивают друг друга (как в дешевых моделях), а действуют раздельно, как в настоящем автомобиле, то есть позволяют, например, моделировать заносы и прочие эффекты. Важным элементом является крепление руля. Если это качественный массивный руль с системой обратной связи, то он передает на стол существенные усилия. Здесь вряд ли можно обойтись системой присосок, большую надежность обеспечат струбцины (рис. 8).

Одним из основных параметров является угол поворота руля - чем он больше, тем лучше. Угол поворота руля колеблется от 100 до 270°. Помимо автомобильных выпускаются и похожие по устройству моторули и штурвалы.

Геймпады

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

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

Традиционные недорогие геймпады имеют два примитивных мини-джойстика, функционирующих по принципу крестовин (рис. 1), ряд программируемых кнопок, ползунковый регулятор и переключение режимов работы. Вспомните типичные аркадные игры: подпрыгнул, выстрелил, развернулся, побежал. Для управления такой игрой больше ничего и не нужно.

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

Системы обратной связи тоже иногда используются в геймпадах - в целях создания эффекта отдачи от столкновений и ударов. Примером такого устройства может служить модель - с функцией Vibration Feedback WingMan Rumblepad от фирмы Logitech.

А модель Logitech Wingman Extreme Pad имеет такую функцию, как Sensor (рис. 9); именно благодаря этому режиму данная модель рекомендуется для авиасимуляторов. Самолет может управляться поворотом самого игрового планшета в пространстве, что создает эффект наличия в игровом устройстве гироскопа. Wingman Extreme Pad имеет также функцию HAT Switch и 10 кнопок, две из которых (под указательными пальцами) являются триггерами.

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

КомпьютерПресс 7"2001

Двухкоординатный джойстик

Небольшой электронный модуль из печатной платы и электромеханического устройства - джойстика. Позволяет реализовать двухкоординатное управление с элементом управления по третьей координате. Модуль имеет простое техническое решение - оператор поворачивает одновременно движки двух переменных резисторов смещая ручку джойстика одним движением. Это позволяет электронике отслеживать отклонение ручки в любом направлении на любую величину.
Для пульта дистанционного управления подвижной колесной или гусеничной платформой двухкоординатный джойстик будет удобным органом управления. Интересно реализовать с помощью джойстика управление перемещением камеры видеонаблюдения, телескопа, направленным микрофоном или направленной Wi-Fi антенной. Двухкоординатный джойстик входит в пульт управления видеоигр класса ранних Нинтендо.
Если удалить колпачок ручки и пружины возврата, то можно использовать двухкоординатный джойстик в петле обратной связи систем автоматического управления как датчик угла поворота механических частей исполнительных механизмов для контроля истинного угла поворота после выполнения команды.

Как устроен джойстик

Ручка закреплена на шарнире и связана с пружинами, возвращающими ручку в центральное положение после отклонения. Внутри два переменных резистора по 10 кОм. В джойстике размещена кнопка. Ее толкатель механически связан с ручкой. При нажатии на ручку контакты кнопки замыкаются. Этот элемент используют для управления перемещением по третьей координате или для других функций. Механическая часть размещена на плате имеющей отверстия. С помощью отверстий двухкоординатный джойстик монтируется в корпусе пульта управления. Электрические лини подключаются к контактам с помощью разъемного соединения.

Обработка данных

Электрическая схема двухкоординатного джойстика.

К контакту +5V подключается напряжение питания. Для разных систем требования к питанию различны. Например. Если реализуется ручное управление светоустановкой с изменением оператором параметров света, то не требуется высокая точность данных снимаемых с джойстика. Требования к точности поддержания напряжения питания снижаются. В случае управления точно ориентируемым объектом требования возрастают. Не обязательно подавать именно 5 В. Величина питания зависит от параметров обрабатывающей электроники. В случае аналоговой схемы без применения микроконтроллеров и АЦП напряжение питания лучше увеличить, принимая во внимание мощность рассеивания резисторов джойстика.
Если электроника строится на основе МК, то питание должно быть очищено от шумов, всплесков и провалов и поддерживаться как можно точнее. Для определения величины напряжения питания следует руководствоваться величиной опорного напряжения АЦП, обрабатывающего сигналы с выходов X и Y. Повышая параметры питания двухкоординатный джойстик можно сделать более чувствительным. В крайних положениях ручки на выходах X и Y потенциалы соответствуют напряжению питания и нулю. Когда ручка отпущена потенциалы выходов соответствуют половине напряжения питания. Зависимость между перемещением и изменением потенциала выхода линейная.
Чаще всего электроника определяющая положение ручки содержит микроконтроллер. Потенциалы на выходах координат подаются на входы АЦП. В случае Arduino их принято называть аналоговыми входами основного модуля Arduino. Дальнейшая обработка данных происходит программным путем. Если АЦП МК обладает разрешающей способностью 10 бит, то это значит, что диапазон значений, выдаваемых АЦП, составляет 0-1023. Перемещение ручки по любой из координат делится на 1024 дискретных элемента. Отпущенное состояние ручки соответствует числу 512.

Подводные камни

При реальном использовании неизбежно столкнемся с множеством подводных камней. Дело в том, что пружины не возвращают ручку точно в центральное положение из-за трения в механических деталях. Это учитывается программно. Для решения этой проблемы в программе следует указать два крайних значения, установив “ворота” и считать, что любое значение, полученное от АЦП в пределах этого диапазона соответсвует положению покоя. Пороговыми константами могут быть числа 504 и 518.
С помощью вольтметра следует проверить, а действительно ли Ваш экземпляр джойстика при крайних отклонениях выдает 0 В и напряжение питания? Возможно наличие мертвых зон. Что это? Дело в том, что механический диапазон перемещения не использует весь электрический диапазон изменения сопротивления. Крайние положения могут соответствовать сопротивлениям 1 кОм и 9 кОм. Следует проверить, какому потенциалу, какому сопротивлению соответствует центральное положение. Наш двухкоординатный джойстик по существу содержит два датчика угла поворота и как всякий датчик требует повышения точности программным путем с помощью алгоритмов вырабатываемых программистом. Здесь нет готовых решений. Это зона творческого поиска, находок и изобретений.

Вариант схемы соединения джойстика и Arduino.

Подключение кнопки джойстика

Контакт кнопки на замыкание подключается к цифровому входу. В цепь контактов может вводиться резистор для обеспечения высокого логического уровня на цифровой линии Arduino когда нажатия нет. Резистор из схемы можно исключить, так как МК содержит собственные внутренние резисторы, выполняющие туже функцию. Их активирование производится программно.

Проверка работы

После компиляции и записи программы в Arduino есть возможность проверить как работает двухкоординатный джойстик до установки его в пульт управления. Откройте программу Serial Monitor и посмотрите, какие числовые данные поступают при манипуляции джойстиком. Какие значение соответствуют различным положениям. Программная часть, принимающая эти данные, преобразует их в команды управления или учитывает как данные обратной связи в зависимости от функции устройства в системе.

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

· одномерные (управление перемещением объекта либо вверх-вниз, либо влево-вправо)

· двухмерные (управление объектом в двух плоскостях)

трёхмерные (управление объектом во всех трёх плоскостях) Джойстики можно разделить на два вида:

дискретные -- сенсоры таких джойстиков могут принимать два значения: «0» или «1», включён/выключен и т. д. При этом каждое нажатие выдает один управляющий импульс и смещает курсор на одну позицию (длительное нажатие приводит к автоповтору команды), диапазон смещения курсора при этом неограничен и определяется только количеством нажатий. Джойстики такого типа считаются устаревшими в ПК, но широко применяюся в простых игровых приставках, мобильных телефонах и прочих устройствах. аналоговые -- у таковых выходной сигнал плавно меняется от нуля до максимума в зависимости от угла отклонения рукоятки: чем больше рукоять отклонена, тем больше уровень сигнала. Диапазон перемещения курсора ограничен ходом ручки джойстика и разрешением применённых сенсоров. После калибровки , подобные джойстики можно применять для указания абсолютной позиции курсора. В свою очередь, аналоговые джойстики делятся на три типа:

o С аналоговым датчиком. Включает в себя Потенциометр_(резистор) и аналогово-цифровой преобразователь . Преимущества: нет особых требований к механике. Недостатки: требователен к качеству питания и АЦП, сам датчик при этом нестаточно долговечен (но в некоторых джойстиках применяются долговечные бесконтактные датчики: магниторезистивные и датчики на эффекте Холла ). Интересно, что в игровом порту АЦП находится в компьютере, а не в джойстике.

o С цифровым датчиком. В таких джойстиках используются энкодеры (оптические датчики наподобие тех, что применяются в компьютерных мышах -- зубчатое колесо, при вращении пересекающее луч от светодиода к фотодиоду). Преимущества: очень чёткий ход, датчик практически вечен. Недостатки: чтобы датчик имел достаточное количество шагов дискретности (примерно 500 шагов на оборот руля, или 150 на движение джойстика от края до края, или 100 на ход педали), нужен или дорогой высокоточный энкодер, или качественный редуктор (мультипликатор ).

o С оптическим датчиком. Такие джойстики действуют аналогично оптической мыши и совмещают высокую точность с высокой надёжностью. Недостаток: применимо только для устройств с небольшим ходом ручки.

Ранее джойстики для ПК подключались к нему через игровой порт , далее полностью произошёл переход к стандартному интерфейсу USB . Долгое время у игровых приставок джойстики подключались через специализированный разъём , специфичный для каждой фирмы-производителя, поэтому джойстик для одной приставки не подходил к другой или же к ПК . В настоящее время джойстики имеют стандартный интерфейс USB, поэтому могут подключаться как к приставке, так к персональному компьютеру.

Геймпад, (джойпад , игровой пульт ) -- тип игрового манипулятора. Представляет собой пульт, который удерживается двумя руками, для управления используются большие пальцы рук (в современных геймпадах также часто используются указательный и средний пальцы). Стандартное исполнение геймпада таково: под левой рукой кнопки направления (вперёд-назад-влево-вправо), под правой -- кнопки действия (прыгнуть, выстрелить).

Во многих современных контроллерах совместно с направляющими кнопками используются аналоговые джойстики. Впервые подобное решение было представлено на контроллере Emerson Arcadia 2001 , но обрело популярность среди игроков только после появления консолей Nintendo 64 , Sony PlayStation и Sega Saturn .

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

· D-pad (от англ. direction -- направление) -- кнопка-крестовина, объединяющая в себе четыре (иногда восемь). Предназначена для управления движением.

· Кнопки действия (action buttons ) -- дают возможность взаимодействовать с объектами игрового мира. Взять, кинуть, зацепиться, выстрелить и т. д.

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

· Аналоговый стик -- представляет из себя выступающую часть на базе контроллера, от положения которой зависит результат управления. Основная функция -- ориентирование в трёхмерном пространстве. Лишён каких либо дополнительных кнопок. Исключение составляет возможность нажатия на сам стик. Данная функция используется для дополнительных действий, расширяя тем самым функциональность устройства.

Кнопки Start , Select , Mode , Back -- служебные кнопки, обеспечивающие контроль за самим игровым процессом (пауза во время игры, вызов меню опций игры, смена режима работы геймпада). Обратная связь , функция вибрации -- возможность предусмотренная в геймпаде, усиливающая активные события в момент игрового процесса (взрывы, удары и пр.) посредством работы вибромотора.

· Некоторые модели, как например Space Orb , имеют встроенный трекбол .

· В некоторых моделях присутствует высокоточная рулевая ось , упрощающая игру в автосимуляторы .

Изначально, концептуальный геймпад для PlayStation 3 , конструктивно был похож на предшественников: Dual Shock , Dual Analog ; при этом, он сильно отличался от них по форме, напоминая банан или бумеранг. Такой дизайн вызвал множество насмешек, в результате его часто называли «бананмеранг». На конференции E3 , Sony отказалась от подобного визуального исполнения контроллера в пользу формы идентичной моделям Dual Shock , при этом добавив беспроводное подключение к консоли и возможность улавливать изменение положения в пространстве. Однако, функция вибрации, доступная в Dual Shock , была убрана. Сама Sony объясняла это помехами, которые создает вибро-режим, влияющие на работу датчика движения (хотя на самом деле, все объясняется конфликтом между Immersion Corporation -- разработчиком технологии обратной связи и Sony . Компания Immersion подала в суд на Sony и Microsoft , за нарушение патентных прав. Microsoft отказалась от разбирательства, в отличие от Sony , которая решила продолжить тяжбу и проиграла дело). В то же время, Wii Remote , без каких либо проблем сочетает в себе и функцию вибрации, и датчик позиционирования в пространстве. Сама корпорация Immersion выпустила новую версию контроллера с измененной системой вибрации, использующая не два мотора, а один. По словам компании, этот мотор может быть использован в геймпаде для PlayStation 3 . Джойпад назвали Sixaxis . Рычаги «L2» и «R2» в задней части стали почти аналоговыми, степень их нажатия можно регулировать подобно педалям в автомобиле. У аналоговых джойстиков был увеличен максимальный угол отклонения и повышена чувствительность. Так, в новом контроллере точность аналоговых джойстиков увеличена с 8 бит (в DualShock 2) до 10. Недавно в продажу поступили джойстики Dual Shock 3 , они идентичны джойстикам Sixaxis , но имеют больший вес из-за 2 вибромоторов.

Компьютерный руль -- игровой контроллер , имитирующий автомобильный руль . Применяется для игры в компьютерные игры -- автосимуляторы .