Делаем педали для авиасимулятора
Это мой второй пост на Пикабу. И он тоже посвящен самоделкам.
Я пилот. Но не который возит пассажиров, одев китель и фуражку. А тот, кто летает по собственному желанию, когда подходящая погода совпадает со свободным временем.
Занимаюсь парением. Начинал свой путь с дельтаплана, затем пересел на планер, для разнообразия освоил параплан. Так что могу запилить отдельный пост о плюсах и минусах каждой техники, если кому будет интересно.
Этот сезон, по понятным причинам, я еще не открыл, и неизвестно еще, когда открою. Но избавиться от весенной ломки не легко. Пилоты, байкеры и другие любители сезонных развлечений меня поймут. Поэтому впервые за много лет я вернулся к авиасимуляторам.
Много лет назад моими любимыми игрушками были Flight Unlimited и Microsoft Flight Simulator. Но сейчас я захотел обратиться к новым технологиям и установил Aerofly FS 2, в котором помимо обычного режима есть поддержка виртуальной реальности. Это очень круто! Можно осматриваться по сторонам, просто вращая головой. Можно держать виртуальный штурвал или ручку (не нужно покупать отдельный игровой штурвал), переключать тумблеры и нажимать на кнопки виртуальными руками, используя VR контроллеры. Это настоящее погружение!
Единственное, чего мне не хватало - это педали. У меня была куча свободного времени и не было желания тратить 10 килорублей на фирменные педали, поэтому я решил сделать собственные.
Если бы у меня был 3D принтер, то я бы сделал педали вроде этих:
Педали RX Viper (https://forums.eagle.ru/showthread.php?t=242411)
Но пока у меня нет 3D принтера, а есть педали для барабанов и куча хлама для "очумелых ручек". В ход пошли: обрезок полипропиленовой трубы, пара болтов, сверло по дереву, переходные муфты и зубчатые шкивы. Так старые добрые карданные Gibraltar 5611 с помощью подручных средств превратились в механику для авиасимулятора, - педали должны работать в противоход.
Механика с близкого ракурса, хорошо видно потенциометр:
Электронная начинка была собрана из управляющей платы Arduino Pro Micro и потенциометра. Схему сборки хорошо видно по фотографии. Потенциометр я подключил к VCC, GND и аналоговому входу А2.
Библиотека, которая превращает контроллер Arduino в джойстик, распознаваемый операционной системой как игровое устройство, скачана отсюда:
https://github.com/MHeironimus/ArduinoJoystickLibraryВот пара статей по использованию библиотеки:
https://www.instructables.com/id/Arduino-LeonardoMicro-as-Ga...https://www.instructables.com/id/Add-USB-Game-Controller-to-...
Библиотека ArduinoJoystickLibrary позволяет превратить контроллер Arduino в полноценную игровую станцию с управлением по нескольким осям и кучей кнопок. Но мне для педалей хватило всего одной функции.
Осью педалей по умолчанию принято считать ось Z. В используемой библиотеке эта ось управляется функцией Joystick.setZAxis(). По факту можно прописать любую ось, нужно лишь откалибровать управление через стандартные средства операционной системы и назначить соответствующие оси управления в авиасимуляторе.
В Aerofly FS2 интерцепторы планера управляются по умолчанию через ось Z. Может быть, это только на моем компьютере так. Но я заменил функцию setZAxis() на функцию setThrottle(), чтобы ничего не конфликтовало.
Функция analogRead(А2) получает значение от 0 до 1023 в зависимости от положения ручки потенциометра, подключенного к пину А2. Соответственно главная строка кода должна иметь вид: Joystick.setZAxis(analogRead(A2)), ну или Joystick.setThrottle(analogRead(A2)) в моем случае.
Весь диапазон вращения потенциометра не обязательно будет задействован после соединения его с педалями. Поэтому обращаю внимание тех, кто захочет это повторить: совершенно не нужно вводить никаких математических корректировок в скетч Arduino, с этим справится калибровка.
Откалибровать устройство нужно будет обязательно. Это необходимо не только для коррекции основной оси, но и для того чтобы система не пыталась вмешиваться в управление другими осями.
Код может посоревноваться в простоте с "Hello World!" и "Blink":
//---------------------------------------------------------------
#include <Joystick.h>
Joystick_ Joystick;
void setup() {
Joystick.begin();
}
void loop() {
Joystick.setZAxis(analogRead(A2)); // Joystick.setThrottle(analogRead(A2));
delay(50);
}
//---------------------------------------------------------------
Вот что получилось в итоге:
А так все выглядит в сборе:
И с другого ракурса:
Управление получилось вполне реалистичным. Я очень доволен результатом! Погружение полное, особенно с VR!
P.S.: Я налетал сотни часов в Flight Unlimited II и MFS с игровым штурвалом. Но у меня не было педалей. Тем не менее, я научился без них обходиться в авиасимуляторе и всерьез считал, что педали не очень-то важны в управлении. Более того, я был уверен, что с такими "навыками" у меня получилось бы управлять реальным ВС. Но первое же занятие в авиашколе убедило меня в обратном. Педали - это, наверное, 30% управления, если не больше. В принципе, есть некоторая возможность управлять реальным самолетом без педалей. Но если провести аналогию, то это примерно как в автомобиле с механической коробкой убрать педаль тормоза, а вместо нее использовать ручник.
P.P.S.: Парение отличается от обычного полета из точки А в точку Б. Это совершенно иной уровень эмоций и спортивного азарта. Лучше всего об этом написал Юлий Герчиков (http://gerchikov.narod.ru/YAW2fly/index1.htm).