-Slayer- wrote:UIV wrote:-Slayer- wrote:Подскажите, возможно ли сейчас дискретно управлять осью при помощи кнопок? - т.е. по аналогии с кнопкой-триммером логической оси, только чтобы при нажатии кнопки значение оси перемещалось на строго определённую величину, и так при каждом повторном нажатии?
Можно. Делаете виртуальную ось и вешаете на нее управление с помощью кнопок.
Ось на кнопки повесить - это понятно, а как эту ось сделать дискретной? Т.е. нажимаем кнопку - ось сдвигается на 10%, ещё раз нажимаем - ещё на 10%?
Можно. Не ручаюсь за точные 10%, посчитайте самостоятельно, но общий порядок следующий. Букв много, поскольку буду объяснять.
Основание - документ Njoy32_new_features.zip (
viewtopic.php?f=15&t=908) и ветка Впереди паровоза (бета-версии).
Нам нужны два элемента управления - Генератор импульса Gt и кнопки триммирования Tr+ Tr-. Кнопка Tr позволяет изменять отклик оси. Идея- изменить значение оси в течение заданного интервала времени, за который она отклонится на нужный угол.
Описание из источников:
Генератор Gt позволяет выдавать импульс заданной длительности по однократному нажатию кнопки.
В поле Op1 задаёся длительность ипульса генератора в юнитах (1...127); Значения юнита задается в поле Op2: 0 = в сотых долях секнды ( x0,01 S), 1 = в десятых долях ( x0,01 S), Таким образом длительность импулься можно задавать от 10 мс до 12,7 с.
Trim+, Trim- позволяют сделать управления осью от кнопок.
Двойной клик по полю Op1 вызывает мастера настройки кнопки триммера.
В мастере выбираем ось к которой делается привязка кнопки (Axis #) и множитель (Multiplier). Собственно задается не
сам множитель, а его степень двойки, полученный множитель показывается слева от поля (MPL:). Чекбокс Unipolar -
опция, ни на что пока не влияет.
Множитель задает шаг приращения триммера, приращение происходит 250 раз в секунду. Диапазон полной шкалы
триммеров ±8192 ед, что означает что при Multiplier = 0 (MPL: 1) полная шкала будет пройдена за 65,5 секунд, при
Multiplier=5 (MPL:32) - за две секунды.
Назначение Trim+, Trim- на разные кнопки ( привязанные к одной оси) , но с разными множителями - позволяет получить
триммеры грубой и точной настройки.
Trim+, Trim- позволяют сделать управления осью только от кнопок (эмулировать виртуальную ось). Для этого в
настройках физической оси надо выбрать тип входа - Virtual.
Выбор этого типа дает контроллеру знать, что на вход данные будут поступать от внешнего обработчика а не с
физической линии, то есть формально вход будет отключен, но триммер останется работать на полный размах оси.
Ещё один момент - чтобы работали триммеры, в настройках соотвествующих осей это надо разрешить явно ( чекбокс
Trim), по дефолту триммирование осей отключено:(устар. прим. ред))))
Конкретные действия.
- Запустите конфигуратор, раскройте вкладку Buttons и вкладку Physical buttons на ней.
-Выберите кнопку, которая будет эмулировать ось.
В качестве примера для ручки Warthog на Мамбе, правая нижняя хатка. Для этой хатки кнопка вправо - линия 47, влево – 45. Триммируем ось X, номер оси 1.
- На вкладке Physical buttons для линии 47 выберите из раскрывающего списка вариант Gt.
- В поле Or2 введите 1 (0,1 с), в поле Or1 – 5.
Таким образом при нажатии кнопки будет выдан импульс (кнопка будет нажата) 0,5 секунды.
- Раскройте вкладку Logical layer. Для линии 47 выберите из раскрывающегося списка вариант Tr+.
- Выполните двойной щелчок левой кнопкой мыши в поле с обозначением функции Tr+.
На экране появится диалог Trimmer combined settings.
- Выберите из раскрывающегося списка Bind to вариант нужной оси. В нашем случае это Axis #1.
- В поле Multiplier задайте коэффициент двойки.
Он будет определять скорость отработки оси. Если весь диапазон от условного центра до максимума в одну сторону составляет 8192 у.е., значение оси изменяется 250 раз в секунду, то можно посчитать, время отработки полного диапазона.
Если Multiplier = 0, 2 в нулевой равно 1. 8192/250/1= 32,768 секунд
Если Multiplier = 3, 2 в кубе равно 8. 8192/250/8= 4,096секунд
С этими значениями стоит поэкспериментировать. Мы не знаем точно угол отклонения оси, поэтому подберите желаемую скорость.
- Для примера задайте Multiplier = 3.
Таким образом если мы будем удерживать кнопку, то за 4 + секунды она отклонится от центра на максимальный угол. Но мы задали время действия кнопки генератором Gt. За 0,5 с ось отклонится на 1/8 от максимума.
Настройка кнопок завершена.
- Чтобы разрешить триммирование оси, раскройте вкладку Parameters.
- Для выбранной оси #1 выберите из раскрывающегося списка Trimmer вариант Trim+ (Вариант Trim- будет отрабатывать в обратном направлении).
- Чтобы изменения настроек вступили в силу, нажмите кнопку Set.
Аналогичным образом можно настроить кнопку Tr-, которая будет отклонять ось в обратную сторону. Целесообразно также назначить кнопку TrRs, которая будет сбрасывать ось в нулевое значение.