???
Математика на уровне МГУ

Показано с 1 по 25 из 125

Тема: Програмирование HOTAS Cougar

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Зашедший
    Регистрация
    01.03.2006
    Адрес
    Харьков, Украина
    Возраст
    43
    Сообщений
    45

    Ответ: Програмирование HOTAS Cougar

    Господа - вопрос. Кто пробовал запрограммировать джой на правильное триммирование самолета на подобие реализации в ДКС Ка50?
    Т.е. при нажатии и удерживании кнопки джоя отключается работа осей. палка сдвигается в любое необходимое положение и при отпускании кнопки новое положение ручки получает старые координаты (которые были в момент нажатия) Таким образом эмитируется снятие нагрузки с ручки. Просто смещение центровки джоя. Слишком плохо знаю Фокси, чтоб это изобразить. Есть какие-либо идеи? Даже как-то попадался кугаровский профиль с реализацией этой функции, но не могу его найти.

  2. #2
    Механик
    Регистрация
    01.08.2002
    Адрес
    Москва, Чертаново
    Возраст
    61
    Сообщений
    1,952
    Записей в дневнике
    2

    Ответ: Програмирование HOTAS Cougar

    Цитата Сообщение от LDemon Посмотреть сообщение
    Господа - вопрос.
    В примерах из инструкции все разложено по полочкам

    6.4 Триммер осей (TRIM)

    Триммирование оси позволяет эмулировать определенное отклонение осей при отпущенных органах управления. К примеру, вы выполняете горизонтальный полет, но ваш самолет стремится к набору. Вам приходится постоянно компенсировать это легким отклонением РУС от себя. Вместо этого вы можете использовать триммер, так что при отпущенной ручке управления игра будет считать, что она немного отклонена вперед. Функция триммирования может быть использована на любой из 10 аналоговых осей Кугуара.

    Синтаксис команды

    TRIM (Название_оси, Величина_триммирования)
    и:
    HOLDTRIM (Название_оси)

    где:

    Название_оси - одно из ниже перечисленного:

    JOYX, JOYY (совместно именуемые JOYSTICK)
    THR
    RNG, ANT (совместно именуемые ROTARIES)
    MIX, MIY (совместно именуемые MICROSTICK)
    LBRK, RBRK (совместно именуемые TOEBRAKES)
    RDDR

    Величина_триммирования - число от -128 до 127, или параметр TO_CURRENT.

    Значение, равное 0 означает отсутствие триммирования.
    Положительное число означает триммирование в сторону увеличения, отрицательное - в сторону уменьшения.
    Параметр TO_CURRENT означает, что контроллер считывает текущее положение оси и устанавливает триммер на это положение.

    Теперь рассмотрим пример, как при помощи программирования колец антенны и масштаба регулировать триммер осей X и Y джойстика при помощи цифровых выражений 1 типа.

    RNG 1 12 TRIM (JOYX, 20+) TRIM (JOYX, 20-)
    ANT 1 12 TRIM (JOYY, 20-) TRIM (JOYY, 20+)

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

    Можно запрограммировать кнопку S2 на джойстике для отключения триммера:

    BTN S2 TRIM (JOYX, 0) TRIM (JOYY, 0) Rem снятие триммера с обеих осей

    или:

    BTN S2 TRIM (JOYSTICK, 0)

    Можно также одной кнопкой применить триммирование определенной оси на определенную величину:

    BTN S4 TRIM (JOYX, 5) TRIM (JOYY, -10)

    И наконец, можно отклонить ручку управления в нужное положение, и установить триммера на это положение, с тем, чтобы при отпускании ручки значения осей остались теми же:

    BTN S2 /I TRIM (JOYSTICK, TO_CURRENT) Rem Триммировать на текущее положение
    /O TRIM (JOYSTICK, 0) Rem Снять триммирование

    Однако, здесь существует одна тонкость. Обратите внимание, что было сказано: "при отпускании ручки". Попробуем прояснить ситуацию. Предположим, вы выполняете горизонтальный полет, и постоянно даете ручку немного от себя для компенсации стремления самолета к набору высоты. Затем вы вышеописанным способом триммируете оси на текущее положение. Теперь, как вы думаете, вы можете вернуть ручку в центральное положение, и самолет продолжит горизонтальный полет. Правильно, но! Только в том случае, если вы умудритесь в рамках одного и того же 30-миллисекундного цикла поставить триммер и вернуть ручку в центральное положение. Скорее всего, это вам не удастся. Что же произойдет? На какую-то секунду самолет резко клюнет носом вниз. Почему? Дело в том, что вы установили триммер на величину, равную отклонению ручки. Теперь, при ручке в центре игра будет получать это значение. Но ручку вы еще не успели отпустить (наверняка) - поэтому в этот момент игра получит значение оси, равное величине триммера ПЛЮС отклонение ручки, или (грубо) в два раза больше! Вряд ли это вам очень понравится на бреющем полете .

    Как обойти это явление?
    Есть два способа: простой и сложный. Начнем с простого:

    BTN S2 HOLDTRIM (JOYSTICK)

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


    Теперь сложный способ, который на самом деле не так уж и сложен. Он состоит в использовании выражений TRIM TO_CURRENT в сочетании с LOCK и UNLOCK (см. далее):

    BTN S2 /P LOCK (JOYSTICK, LASTVALUE) TRIM(JOYSTICK, TO_CURRENT)
    /R UNLOCK (JOYSTICK)

    С точки зрения ваших действий происходит все то же самое. А теперь как это работает внутри: Первое, что происходит - оси джойстика как бы "блокируются" в текущем положении. Затем происходит триммирование осей на эти значения. Затем, когда ручка возвращается в центральное положение, блокировка снимается. Именно так компилятор конвертирует выражение BTN S2 HOLDTRIM (JOYSTICK).


    Примечания

    1. Изменение величины триммера TRIM приводит к прибавлению или вычитанию целочисленного значения из значения оси, и никак не влияет на кривую отклика - просто происходит сдвиг всего графика кривой на заданную величину.

    2. При триммировании оси с линейным графиком отклика ее рабочий диапазон "обрезается" с одной или другой стороны.

    3. Инверсия оси не влияет на направление триммирования. Цифровые режимы работы осей не инвертируются при инверсии аналоговой оси.

    4. Будьте внимательны, с какой стороны от числа вы ставите знак "+" или "-" - эффект будет различный (это касается не только триммирования). Знак слева от числа означает абсолютную величину триммирования (и ее знак), знак справа от числа означает прибавление или вычитание указанной величины от текущего значения триммера, то есть означает относительное изменение. См. раздел "Управление мышью и микроджойстик" для более подробного объяснения различий действия знаков в зависимости от их положения справа или слева от числа. Модуль Composer утилиты Foxy поможет вам избежать ошибок.

    5. Все ниже приведенные примеры использования выражения HOLDTRIM допустимы:

    BTN T6 a b HOLDTRIM (RNG) c d
    BTN S4 /P a HOLDTRIM (RNG)
    /R b
    BTN S1 a { HOLDTRIM (JOYY) b HOLDTRIM (ANT) }

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

    6. Нельзя называть макрокоманду TRIM, (заглавными буквами), но можно, например, Trim или Trim_Hold.

    7. Можно использовать ключ автоповтора (/A) в сочетании с командой TRIM для плавного управления триммерами при помощи кнопок или хэта, например:

    BTN H1U /A TRIM (JOYY, 5-) DLY(120)
    BTN H1D /A TRIM (JOYY, 5+) DLY(120)
    BTN H1L /A TRIM (JOYX, 5-) DLY(120)
    BTN H1R /A TRIM (JOYX, 5+) DLY(120)

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

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •