Джойстик не роскошь, а средство передвижения

За годы развития компьютеров было придумано немало разных устройств для ввода данных, однако три наиболее распространенных из них: клавиатура, мышь и джойстик. Из трех вышеперечисленных джойстик - самый простой, ведь даже в мыши все-таки есть одна микросхема. Несмотря на свою простоту, джойстики одно время были вымирающим (по крайней мере, у нас и именно на PC) видом, и это притом, что джойстиком была укомплектована даже самая первая модель IBM PC. А все оттого, что жадные производители железа экономили на гейм-порте. Теперь времена изменились и джойстик переживает своего рода ренессанс и этому есть две причины: во-первых, гейм-порт легко можно поставить на материнскую плату с интегрированным контроллером периферийных устройств, чем нас иногда и балуют производители, во-вторых, на любой уважающей себя звуковой карте присутствует свой гейм-порт. А поскольку джойстик - совершенно незаменимое устройство для всяческих леталок, то давайте разберемся, кому интересно, как он работает.

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

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

Итак, рассмотрим устройство джойстика. Рукоятка закреплена на оси, которая, в свою очередь, закреплена во вращающейся втулке. В разных моделях механика может быть различной, но суть всегда одна: надо разложить произвольные движения рукоятки по перпендикулярным направлениям. С перпендикулярных осей перемещение передается на ползунки двух переменных резисторов: один - для X (вправо-влево), другой для Y - (от себя - на себя). Максимальное сопротивление резисторов составляет порядка 100 килоом, когда вы двигаете рукоятку, оно соответственно изменяется от 0 до 100 Ком. Этот аналоговый сигнал и попадает в компьютер. Кнопки представляют собой обычные выключатели (разомкнуты, когда отпущены), и сигнал от них можно обрабатывать сразу, как цифровой. Однако аналоговый сигнал надо сначала превратить в цифровой. Вообще, обычно для этого применяют АЦП (аналого-цифровой преобразователь), но в случае с джойстиком все несколько сложнее. Аналоговый сигнал попадает на вход микросхемы 558 (или аналога) - она представляет собой четыре ждущих мультивибратора - в зависимости от сопротивления джойстика они вырабатывают импульсы той или иной длины. Сосчитав количество тиков таймера, укладывающееся в один такой импульс, можно получить цифровое значение, прямо пропорциональное входному аналоговому. Собственно говоря, это тоже своего рода АЦП. Таков, в самом общем виде, принцип действия. А принципиальная схема - на рисунке.

Теперь что касается разъема. Для подключения джойстика используется 15-ти штырьковый разъем. Зачем столько много? Потому что на самом деле к одному гейм-порту можно подключить два стандартных джойстика, надо только сделать переходник. С другой стороны, можно подключить один джойстик, но нестандартный. Например, с четырьмя кнопками или с ручкой газа (он будет использовать для своих нужд часть входов, предназначенных для второго джойстика). Если гейм-порт находится на звуковой плате, то к разъему еще можно подключать и MIDI-совместимые музыкальные инструменты. Назначение выводов гейм-порта описано в таблице:

Вывод Назначение
1 общий для резисторов (питание +5 вольт) (джойстик A)
2 кнопка 1 (джойстик A)
3 координата X (джойстик A)
4 общий для кнопок (земля) (джойстик A)
5 общий для кнопок (земля) (джойстик B)
6 координата Y (джойстик A)
7 кнопка 2 (джойстик A)
8 не используется
9 общий для резисторов (питание +5 вольт) (джойстик B)
10 кнопка 1 (джойстик B)
11 координата X (джойстик B)
12 MIDI TXD (передача от компьютера к MIDI-устройству)
13 координата Y (джойстик B)
14 кнопка 2 (джойстик B)
15 MIDI RXD (передача от MIDI-устройства к компьютеру)

Как видите, гейм-порт можно использовать в качестве источника питания (+5 вольт). Это второе внешнее устройство (после клавиатуры), на которое подается собственное питание.

Обращаться к джойстику можно через функции BIOS:

INT 15h

AH = 84h (номер функции прерывания)

DX = номер подфункции:

0000h считать состояние кнопок джойстика.

Возвращает: биты 7 - 4 регистра AL = состояние кнопок (0 - отпущена, 1 - нажата)

0001h считать положение джойстика

Возвращает: AX = положение по X джойстика A, BX = положение по Y джойстика A, CX = положение по X джойстика B, DX = положение по Y джойстика B.

Возвращает в случае ошибки: установлен флаг CF

Регистр AH = статус ошибки: 80h - неправильная команда (PC), 86h - функция не поддерживается

Если гейм-порт не найден, подфункция 0000h возвращает AL=00h (все кнопки отпущены), а подфункция 0001h возвращает AX=BX=CX=DX=0000h (джойстик возвращает значения порядка 0000h-01A0h)

Итак, мы разобрались с тем, как работает джойстик. Но ведь это только самая простая его разновидность. Сейчас выпускается множество моделей джойстиков, которые не предназначены для работы с гейм-портом. Альтернативные способы подключения следующие: через последовательный и параллельный порты, параллельно клавиатуре, через гейм-порт, но используя собственный цифровой протокол обмена. Так что тут осталось еще много всего интересного.

Константин АФАНАСЬЕВ

Версия для печатиВерсия для печати

Номер: 

15 за 1997 год

Рубрика: 

Hardware
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!