Jump to content
NobbyNobbs

Программирование джойстиков CH Products

Recommended Posts

Смотреть что сгорело. Тут вариантов дофига. Начинать логичнее всего с цепи питания. Она горит чаще всех.

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

Далее мерить мультиметром в режиме прозвонки резисторы, диоды, конденсаторы, предохранители, если есть. Затем мерить сопротивление резисторов, напряжение открытия диодов, и тд.  Если сам не найдешь - тогда уже к инженерам или сервисмэнам.

Если инструкции недостаточно - youtube в помощь. Там таких видео дофига.

Edited by PickRelated

Share this post


Link to post
Share on other sites

Спасибо.Только визуально ничего не сгорело. А инженер без схемы разберется ?

Share this post


Link to post
Share on other sites

Разберется. Наши разбирались  :)

Педали не сложнее китайского зарядника.

Share this post


Link to post
Share on other sites

Не по теме пишу, но все же помогите если кто знает !!!! СЖЕГ педали(замкнул ноги на резюке, ну и, похоже контроллер сгорел). как починить теперь ?

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

Share this post


Link to post
Share on other sites

Если просто замкнуть ноги на резюке, то походу, ничего страшного случиться не должно.

Тогда ток побежит через перемычку и резистора считай будто нет в схеме. Током убьет следующий чувствительный элемент. А то и несколько.

Но пробежаться мультиметром по напряжениям тоже стоит.

Share this post


Link to post
Share on other sites

Тогда ток побежит через перемычку и резистора считай будто нет в схеме. Током убьет следующий чувствительный элемент. А то и несколько.

Но пробежаться мультиметром по напряжениям тоже стоит.

 

Ты прав, но исходя из самых общих суждений. А по факту, надо всегда рассуждать предметно.  Я говорил про процессор.   Его не убить простым замыканием резюка

Смотрим схему:

post-4254-0-51981700-1404381265_thumb.gif

1.  Если замкнуть вывод от процессора на верхний вывод резистора 5 В - ничего не будет ( ведь это равносильно резистору выкрученному в макс.)

2.  Если замкнуть вывод от процессора на нижний вывод резистора 0 В - тоже ничего не будет, по аналогичной причине

3. Если замкнуть крайние выводы резистора, то процессору опять же ничего не будет - через ногу процессора ничего не потечет, на ней будет 0 вольт, а ток КЗ потечет на землю от источника 5 В.  И если он не защищен, то ОН (источник питания) и только он выйдет из строя.  

4.  Входы процессора, в зависимости от исполнения, выдерживают приложенное напряжение вплоть до 2 U пит!

 

Так, что я думаю, сердце педалей - "процессор" жив. Надо проверять цепи питания.

 

А если процессор все же умер, то значит там было сделано что то иное, чем просто замыкание выводов резистора

Edited by [I.B.]Zulu

Share this post


Link to post
Share on other sites

1.  Если замкнуть вывод от процессора на верхний вывод резистора 5 В - ничего не будет ( ведь это равносильно резистору выкрученному в макс.)

2.  Если замкнуть вывод от процессора на нижний вывод резистора 0 В - тоже ничего не будет, по аналогичной причине

3. Если замкнуть крайние выводы резистора, то процессору опять же ничего не будет - через ногу процессора ничего не потечет, на ней будет 0 вольт, а ток КЗ потечет на землю от источника 5 В.  И если он не защищен, то ОН (источник питания) и только он выйдет из строя.  

4.  Входы процессора, в зависимости от исполнения, выдерживают приложенное напряжение вплоть до 2 U пит!

 

Так, что я думаю, сердце педалей - "процессор" жив. Надо проверять цепи питания.

 

А если процессор все же умер, то значит там было сделано что то иное, чем просто замыкание выводов резистора

Я прав именно исходя из знания законов Кирхгофа и Ома. Я инженер по специальности промышленная электроника и имею опыт работы разработчиком. А самое главное - опыт по спаливанию процессоров.  :)

Ты привел частный пример, причем не с резистором, а с реостатом (переменным резистором). SVOR не говорил что сжег переменный резистор.

Ну да ладно, предположим, имеем реостат. Исходя из схемы, цепь аналоговая. И на ноге RB2 с вероятностью 99% висит АЦП (в этом заключается частный случай).

Теперь касательно оскорблений господина Кирхгофа.

1. Это будет почти равносильно резистору, выкрученному в MIN (MIN может быть и 10кОм, а мы будем иметь сопротивление перемычки <1 Ом). Если нога сконфигурирована в режиме PULL DOWN, то сгорит к херам если нет защиты. Если нога сконфигурирована в АЦП, то он может сгореть по токовой перегрузке. 

2. Это будет просадка ноги на землю. Если нога сконфигурирована в режиме PULL UP, то сгорит к херам если нет защиты. Если нога сконфигурирована в АЦП, то ты прав и не произойдет ровным счетом ничего и АЦП будет давать процессору показания 0 Вольт. 

3. Верно, но сгореть может и сам USB разъем. Стоит попробовать воткнуть в другой (предварительно убрав перемычку или посторонний предмет, вызвавший замыкание).

4. Есть ноги, толерантные к 5В и нетолерантные. Если RB2 не 5V Tolerant, то она сгорит в случае замыкания на 5В. ГАРАНТИРУЮ. Имею опыт такого безобразия. За исключением случая, когда процессор имеет напряжение питания 5 Вольт. Можно поискать на плате стабилизатор питания. Если он на 5В, а не на 3,3В, то 5В на АЦП могли его и не убить. Не помню как ядро AVR, но ARM питается от 3,3В. Меньше - бывает, больше - мне не попадались.

 

SVOR, ждем твоих комментариев. Что замкнулось? Резистор (2 вывода) или реостат (3 вывода)? Можно фотку.

Share this post


Link to post
Share on other sites
Я прав именно исходя из знания законов Кирхгофа и Ома. Я инженер по специальности промышленная электроника и имею опыт работы разработчиком. А самое главное - опыт по спаливанию процессоров. 

 

 

 

1. Это будет почти равносильно резистору, выкрученному в MIN (MIN может быть и 10кОм, а мы будем иметь сопротивление перемычки <1 Ом). Если нога сконфигурирована в режиме PULL DOWN, то сгорит к херам если нет защиты. Если нога сконфигурирована в АЦП, то он может сгореть по токовой перегрузке. 

 

 

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

Чет ты запарился совсем :)   

 

 

 

PS.  Моё первое образование радиоинженер по разработке РЭС

Edited by [I.B.]Zulu

Share this post


Link to post
Share on other sites

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

Чет ты запарился совсем :)   

Наверное, если я с пеной у рта доказываю что-то, то я в этом уверен. :)  Из официальной документации на процессор STM32:

 

Input modes:

IPD (Input Pull Down)

IPU (Input Push Up)

IN_FLOATING (Not pulled)

AIN (Alalogue in)

 

Output Modes:

Output open-drain

Output push-pull

 

Впринципе, можно почитать, например, вот тут: http://microtechnics.ru/stm32-uchebnyj-kurs-gpio-porty-vvoda-vyvoda/

Share this post


Link to post
Share on other sites

Ох, да зачем же с пеной то у рта :)   Вовсе не собираюсь тебя уличить в незнании чего либо.

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

--------

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

 

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

 

Ну и потом, ведь мы даже не знаем, что там за проц. Единственное, что могу сказать, что там вроде PIC о восемнадцати DIP ногах, какой именно не смотрел, ибо когда вскрывал, заклеено было гарантийной наклейкой.  А у тех древних пиков, туева хуча наименований, на который Uпит  от 3,3 до 9 вольт и входы всегда высокомные, без каких либо подтяжек Up OR Down..

 

Вот :)  Да и не суть это в данной теме, оффтопимс :)  Давай в личку, если чо :)

Share this post


Link to post
Share on other sites

Вот :)  Да и не суть это в данной теме, оффтопимс :)  Давай в личку, если чо :)

Никаких эмоций. А спорим, действительно, ни о чем. SVOR вообще потерял интерес к беседе.

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

Share this post


Link to post
Share on other sites

 

 

А спорим, действительно, ни о чем. SVOR вообще потерял интерес к беседе.
 

Точно.  Либо забыл, что вопрошал :)

Share this post


Link to post
Share on other sites

сори отсутствовал...(

серьезная дискуссия получилась )

сгорел (задымился) реостат - 3 ноги. разобрал - на дорожках выгоревшие места.

выкинул его..

 собрал педали без него , подключил - CH Control Manager не видит педали. вот я и решил(с перепугу) что сгорел контроллер.

 Однако (вот тут прошу сильно не пинать) после перезагрузки подключил еще раз и О Чудо  -заработало. Т.Е контроллер жив. сгорел только резюк

Share this post


Link to post
Share on other sites

Выкладываю командный файл  привязки профиля к дефолтным БзС командам. Изменения соответствуют 73-74 РД.

 

Если кто не знает, то этот файл позволяет навсегда забыть про необходимость переназначать кнопки под себя каждый раз, после выхода обновлений БзС или переустановке игры.

 

Брать тут: http://www.ch-hangar.com/forum/index.php/files/file/336-boscmc/

  • Upvote 3

Share this post


Link to post
Share on other sites

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

 

Жмем вот эту кнопочку:

post-4254-0-70864000-1406981057_thumb.gif

 

И уточнив программе, что именно хотим, получаем примерно такие вот картиночки для каждого из своих контроллеров

(можно на принтер, можно в JPG):

post-4254-0-82768300-1406981056_thumb.gif

 

 

Вот :)

Edited by [I.B.]Zulu
  • Upvote 3

Share this post


Link to post
Share on other sites

Выкладываю командный файл  привязки профиля к дефолтным БзС командам. Изменения соответствуют 73-74 РД.

 

Если кто не знает, то этот файл позволяет навсегда забыть про необходимость переназначать кнопки под себя каждый раз, после выхода обновлений БзС или переустановке игры.

 

Брать тут: http://www.ch-hangar.com/forum/index.php/files/file/336-boscmc/

 

Спасибо) Зарегистрировался, не даёт скачать( И без регистрации не скачивает, может на какой другой хостинг?

 

 

946ea7a152.png

 

 

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

Edited by -DED-Gray

Share this post


Link to post
Share on other sites

Странно.  Может из-за того, что ты недавно...
 
Не вопрос, пожалуйста: BoS.rar

  • Upvote 1

Share this post


Link to post
Share on other sites

Странно.  Может из-за того, что ты недавно...

 

Не вопрос, пожалуйста: BoS.rar

 

Спасибо огромное  :fly:

Share this post


Link to post
Share on other sites

Выкладываю командный файл  привязки профиля к дефолтным БзС командам. Изменения соответствуют 73-74 РД.

 

Если кто не знает, то этот файл позволяет навсегда забыть про необходимость переназначать кнопки под себя каждый раз, после выхода обновлений БзС или переустановке игры.

 

Брать тут: http://www.ch-hangar.com/forum/index.php/files/file/336-boscmc/

Вот спасибо! Супер!!!!  :yahoo:

Share this post


Link to post
Share on other sites

Кстати сказать, Loft и Co с тех времен, когда они были ещё FLUING BARANS неравнодушны к продукции CH. И одни из первых ,по мере освоения продукции выкладывали статьи.

Посему командные файлы БЗС просто обязаны легко вкладываться в  СН Control Manager... ;)

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites

Кстати сказать, Loft и Co с тех времен, когда они были ещё FLUING BARANS неравнодушны к продукции CH. И одни из первых ,по мере освоения продукции выкладывали статьи.

Посему командные файлы БЗС просто обязаны легко вкладываться в  СН Control Manager... ;)

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

Edited by [I.B.]Zulu

Share this post


Link to post
Share on other sites

Нужна помошь !!!

Не могу сладить с калибровкой ProThrottle...

Когда калибруюсь из CM (в директ моде), то макс и мин значения что для микростика ,что для РУДа меньше диапазона 0...255.

Так для оси Х микростика 56...195, для Y: 64...197 ,для Z (руд): 1...232.

Калибровка только и делает, что "подгоняет" для этих значений полное отклонение маркеров на тестовом экране.

Если переключаюсь в Mapped Mod, то... о чудо, величины отклонений становятся в полном диапазоне (0...255), но! шаг значений для микростика становится 2! т.е. ...71...73...75 и т.д. Как будто идет "растягивание" диапазона.

Собственно вопрос - что это за чертовщина! :(

...можно ли (и нужно ли) калиброваться средствами Windows (я, правда не знаю как :((Win8.1), чтобы победить проблему?... или это проблема конкретного девайса?

 

С Комбатом - все нормально, работает в полном диапазоне.

Share this post


Link to post
Share on other sites

 

 

но! шаг значений для микростика становится 2!
 

 

аналогично.

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

Share this post


Link to post
Share on other sites

...Похоже это особенность девайса... Сейчас снял "шляпу" с микростика - диапазон значений расширился: по Х 30...225, по Y 35...220...

т.е. если изменить форму "шляпки", а заодно поднять её повыше и рассверлить пошире отверстие под неё же, то видимо можно будет ещё улучшить цифры...

Share this post


Link to post
Share on other sites

Есть следующее:

  1. "Электротриммирование" по всем осям: с сохранением полного диапазона отклонений, как на Ка-50: нажал кнопку -- ручка (и педали) запомнили, где они (центр смещается), при этом сохраняется полный диапазон отклонения (scaling оси). Коррекция электротриммирования РУСа и педалей по пипке на РУСе. Игровыми триммерами можно вообще после этого не пользоваться + появляются "триммера" там, где их нет (РН на мессе и проч.) + возможность мгновенно затриммировать вираж.
  2. "Подруливание": отклонение ручки на 10% с помощью крестовой хатки на РУСе.
  3. На ProThrottle -- Объединение Сектора газа и Шага винта (одновременное движение) с коррекцией шага (точки присоединения) от хатки, с возможностью отсоединения/присоединения на лету (управление, естественно, возможно от хатки) и мгновенного макс/мин шага.
  4. Сглаживание оси (например шумящей оси колёсика).
  5. Ещё есть раздельное торможение на советские -- но в БзС неудобно, только мешает, убрал.
  6. Изменение кривой на лету (с учётом триммирования).
  7. Включение форсажа в 10% зоне с 2% мёртвым участком (95%-97% -- полный газ, >97% -- форсаж) -- хорошо работает с подклеиванием "ограничителя" из одёжной липучки.

Алгоритмы сложные для разбора-понимания. Что-то надо из этого?

Edited by 72AG_terror
  • Upvote 2

Share this post


Link to post
Share on other sites

пользоваться вряд ли буду, но из праздного любопытства вот это бы посмотрел:

 

 

6. Изменение кривой на лету (с учётом триммирования).
 

 

:blush:

Share this post


Link to post
Share on other sites

...Похоже это особенность девайса... Сейчас снял "шляпу" с микростика - диапазон значений расширился: по Х 30...225, по Y 35...220...

т.е. если изменить форму "шляпки", а заодно поднять её повыше и рассверлить пошире отверстие под неё же, то видимо можно будет ещё улучшить цифры...

 

Да, да. Особенность. Как то давно об этом писали разработчики. Типа, министик и нужен то, что бы оп LCD прицелу маркер водить (ну там Su-27, A-10 и т.д.) а там и такой точности за глаза хватает.  Проблему править не стали, так как желающих иметь более эргономичную шляпку стика, было на порядок больше желающих иметь полный диапазон перемещения...  Что то так...

Share this post


Link to post
Share on other sites

Есть следующее:

  1. "Электротриммирование" по всем осям: с сохранением полного диапазона отклонений, как на Ка-50: нажал кнопку -- ручка (и педали) запомнили, где они (центр смещается), при этом сохраняется полный диапазон отклонения (scaling оси). Коррекция электротриммирования РУСа и педалей по пипке на РУСе. Игровыми триммерами можно вообще после этого не пользоваться + появляются "триммера" там, где их нет (РН на мессе и проч.) + возможность мгновенно затриммировать вираж.
  2. "Подруливание": отклонение ручки на 10% с помощью крестовой хатки на РУСе.
  3. На ProThrottle -- Объединение Сектора газа и Шага винта (одновременное движение) с коррекцией шага (точки присоединения) от хатки, с возможностью отсоединения/присоединения на лету (управление, естественно, возможно от хатки) и мгновенного макс/мин шага.
  4. Сглаживание оси (например шумящей оси колёсика).
  5. Ещё есть раздельное торможение на советские -- но в БзС неудобно, только мешает, убрал.
  6. Изменение кривой на лету (с учётом триммирования).
  7. Включение форсажа в 10% зоне с 2% мёртвым участком (95%-97% -- полный газ, >97% -- форсаж) -- хорошо работает с подклеиванием "ограничителя" из одёжной липучки.

Алгоритмы сложные для разбора-понимания. Что-то надо из этого?

 

Примеры никогда не бывают лишними.   Если есть возможность, вставь туда комментарии, и выложи архивом.   Всегда полезно. 

Спасибо :)

 

 

А форсаж я себе сделал аля ДаблКлик -  т.е. от быстроого двойного упирания Тротла в МАКС.  Очень удобно!   Двинул до конца дважды (кратко, - тык-тык)  включился форсаж. Назад двинул, опять нормальный режим. :)

Edited by [I.B.]Zulu

Share this post


Link to post
Share on other sites

пользоваться вряд ли буду, но из праздного любопытства вот это бы посмотрел:

 

:blush:

Даю отрывко про нелинейность (так понял, она интересует), триммирование оттуда, чтобы не затуманивало, убрал.

 

%DEFINE CONST_Stick_Non_Linearity  50 // Задаём желаемую степень нелинейности

//        Входящие значения осей управления самолётом
%DEFINE J_Stick_X            JS2.A1    // Ось Х ( CH Fighterstick, у меня, почему-то, на второй вкладке, поэтому JS2 )
%DEFINE J_Stick_Y            JS2.A2    // Ось Y
%DEFINE J_Pedals            JS1.A3    // Педали ( CH ProPedals, педали на первой вкладке )

//        Внутренние переменные для промежуточных вычислений
%DEFINE A_Stick_X            A1    // Ось Х
%DEFINE A_Stick_Y            A2     // Ось Y
%DEFINE A_Pedals            A3    // Педали
%DEFINE A_Non_Linear_Coef    A9 // Внутренняя переменная -- коэффициент нелинейности для вычислений

//        Выходящие значения осей
%DEFINE C_Stick_X            CMS.A1 // Ось Х (крен)
%DEFINE C_Stick_Y            CMS.A2 // Ось Y (тангаж)
%DEFINE C_Rudder            CMS.A3 // Педали

//        Определение режима РУС (какая лампочка включена)
%DEFINE Green_LED            0
%DEFINE Red_LED                1
%DEFINE Amber_LED            2
%DEFINE Stick_green_mode    ( [ FTRSTKMODE == Green_LED ] ) // Зелёная лампочка
%DEFINE Stick_red_mode        ( [ FTRSTKMODE == Red_LED ] )   // Красная
%DEFINE Stick_yellow_mode    ( [ FTRSTKMODE == Amber_LED ] ) // Жёлтая

// Всё задали, понеслась
script
    if ( Stick_yellow_mode OR Stick_red_mode ) then        // Если режим на РУС не зелёный, то ...
    // Вычисляем коэффициент
        A_Non_Linear_Coef     = ( 255 - 127 ) * ( 255 - 127 ) + ( 255 - 127 ) * CONST_Stick_Non_Linearity;
        A_Non_Linear_Coef     = A_Non_Linear_Coef / 128;

        if( [ J_Stick_X < 128 ] ) then        // Если ручка отклонена от центра влево, то ...
            A_Stick_X = ( J_Stick_X - 128 ) * ( J_Stick_X - 128 ) - ( J_Stick_X - 128 ) * CONST_Stick_Non_Linearity;
            A_Stick_X = 127 - ( A_Stick_X / A_Non_Linear_Coef );
        else        // Если вправо, то ...
            A_Stick_X = ( J_Stick_X - 128 ) * ( J_Stick_X - 128 ) + ( J_Stick_X - 128 ) * CONST_Stick_Non_Linearity;
            A_Stick_X = 127 + ( A_Stick_X / A_Non_Linear_Coef );
        endif

        if( [ J_Stick_Y < 128 ] ) then // Если ручка отклонена от себя...
            A_Stick_Y = ( J_Stick_Y - 128 ) * ( J_Stick_Y - 128 ) - ( J_Stick_Y - 128 ) * CONST_Stick_Non_Linearity;
            A_Stick_Y = 127 - ( A_Stick_Y / A_Non_Linear_Coef );
        else // На себя ...
            A_Stick_Y = ( J_Stick_Y - 128 ) * ( J_Stick_Y - 128 ) + ( J_Stick_Y - 128 ) * CONST_Stick_Non_Linearity;
            A_Stick_Y = 127 + ( A_Stick_Y / A_Non_Linear_Coef );
        endif

        if( [ J_Pedals < 128 ] ) then // Педали аналогично
            A_Pedals = ( A_Pedals - 128 ) * ( A_Pedals - 128 ) - ( A_Pedals - 128 ) * CONST_Stick_Non_Linearity;
            A_Pedals = 127 - ( A_Pedals / A_Non_Linear_Coef );
        else
            A_Pedals = ( A_Pedals - 128 ) * ( A_Pedals - 128 ) + ( A_Pedals - 128 ) * CONST_Stick_Non_Linearity;
            A_Pedals = 127 + ( A_Pedals / A_Non_Linear_Coef );
        endif
        
        // Так как из-за недостатков вычислительных алгоритмов (отбрасывание дробной части),
        // макс. значение -- 254, поэтому, если 254, сразу даём 255, чтобы не терять макс. отклонения (с потерей одного шажка вблизи max)
        if ( [ J_Stick_X > 253 ] ) then
            A_Stick_X = J_Stick_X;
        endif
        if ( [ J_Stick_Y > 253 ] ) then
            A_Stick_Y = J_Stick_Y;
        endif
        if ( [ J_Pedals > 253 ] ) then
            A_Stick_Y = J_Stick_Y;
        endif
        
    else // Если режим РУС "зелёный" (линейный, просто берём значения по осям
        A_Stick_X = J_Stick_X;
        A_Stick_Y = J_Stick_Y;
        A_Pedals = J_Pedals;
    endif
    
    // Ну, и, собственно, устанавливаем выводимые оси в вычисленные положения
    C_Stick_X    = A_Stick_X;
    C_Stick_Y    = A_Stick_Y;
    C_Rudder    = A_Pedals;
    
endscript // Или победа человека над компьютером

Примеры никогда не бывают лишними.   Если есть возможность, вставь туда комментарии, и выложи архивом.   Всегда полезно. 

Спасибо :)

 

 

А форсаж я себе сделал аля ДаблКлик -  т.е. от быстроого двойного упирания Тротла в МАКС.  Очень удобно!   Двинул до конца дважды (кратко, - тык-тык)  включился форсаж. Назад двинул, опять нормальный режим. :)

 

Окей, докомменчу и прилеплю на днях.

Edited by 72AG_terror
  • Upvote 2

Share this post


Link to post
Share on other sites

Даю отрывко про нелинейность (так понял, она интересует), триммирование оттуда, чтобы не затуманивало, убрал.

...

Правда, разобраться в чужом коде с налета сложновато... но интересно! Так что во-первых спасибо за работу...

..и помогай разбираться...

- Непонятно, например, почему A_Non_Linear_Coef считается по длинным формулам аж в две строки если  это всего лишь константа?

- я так понял, что переключая моды-лампочки где то в неописанной части кода ты используешьм другую CONST_Stick_Non_Linearity и соответственно другую нелинейность?

 

 

...

Окей, докомменчу и прилеплю на днях.

 

Очень хорошо!... Если сил хватит, выкладывай всё! Всегда интересны примеры для лучшего понимания, "мотания на ус", ну и просто утащить для личного использования :)

 

... Интересно и про тормоза... тут уже мы с Nobby отписались по ним по разу... интересны ещё алгоритмы...

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites

- Непонятно, например, почему A_Non_Linear_Coef считается по длинным формулам аж в две строки если  это всего лишь константа?

 

Полагаю это для наглядности самому себе, что бы не забыть, откуда и почему именно такое число для коффициента.  ;)

Share this post


Link to post
Share on other sites

2 terror :) Спасибо. Приятно читать сторонний код. Особенно мне понравилось, как он у тебя структурирован.  

... Всегда находишь, что то новое, а иногда замечаешь места, где сам бы сделал по другому  :)

 

// Так как из-за недостатков вычислительных алгоритмов (отбрасывание дробной части),

 // макс. значение -- 254, поэтому, если 254, сразу даём 255, чтобы не терять макс. отклонения (с потерей одного шажка вблизи max)

 

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

 

if ( Stick_yellow_mode OR Stick_red_mode ) then        // Если режим на РУС не зелёный, то ...

 

В общем то, можно было так и записать: if ( NOT Stick_greed_mode  ) then 

 

---------------

 

А почему для определения текущего режима джойстиков ты использовал FTRSTKMODE   а не CURRENTMODE?  Последняя переменная более гибкая, и в отличие от первой она не только "на чтение", но и "на запись".  Я просто интересуюсь, может это оправдано. 

Edited by [I.B.]Zulu

Share this post


Link to post
Share on other sites

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

Как удалось выяснить опытным путем (методом наблюдения результата при вычитании двух больших чисел), CMS использует для своей целочисленной арифметики 4-х байтные значения в диапазоне ~ от  ‑2147483648 до 2147483647. (Кажется это тип INTEGER во всяких бейсиках...)

Edited by =J13=Moroka
  • Upvote 1

Share this post


Link to post
Share on other sites

Ага. Спасибо. Похоже на это.  Разрабы называют тот тип REAL.    Есть такой в ассемблерах?

Share this post


Link to post
Share on other sites

Нашел ошибку в своем командном файле  Bos.cmc выложенном в топике № 137

 

Можно заново его перекачать, он обновлен.  Можно вручную.

Вот исправление:

Lights_Landing                        HOLD RSHF l

  • Upvote 2

Share this post


Link to post
Share on other sites

Правда, разобраться в чужом коде с налета сложновато... но интересно! Так что во-первых спасибо за работу...

..и помогай разбираться...

- Непонятно, например, почему A_Non_Linear_Coef считается по длинным формулам аж в две строки если  это всего лишь константа?

- я так понял, что переключая моды-лампочки где то в неописанной части кода ты используешьм другую CONST_Stick_Non_Linearity и соответственно другую нелинейность?

 

 
 

Очень хорошо!... Если сил хватит, выкладывай всё! Всегда интересны примеры для лучшего понимания, "мотания на ус", ну и просто утащить для личного использования :)

 

... Интересно и про тормоза... тут уже мы с Nobby отписались по ним по разу... интересны ещё алгоритмы...

 

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

 

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

 

Тормоза я, конечно, запощу, только мне показалось, что в БзС удобнее с кнопки на советских тормозить. :) В БзБ и в Иле же было очень актуально.

 

Полагаю это для наглядности самому себе, что бы не забыть, откуда и почему именно такое число для коффициента.  ;)

Да, верно. Плюс ещё я что-то там отлаживал, а переписать уже поленился. :)

 

2 terror :) Спасибо. Приятно читать сторонний код. Особенно мне понравилось, как он у тебя структурирован.  

... Всегда находишь, что то новое, а иногда замечаешь места, где сам бы сделал по другому  :)

 

// Так как из-за недостатков вычислительных алгоритмов (отбрасывание дробной части),

 // макс. значение -- 254, поэтому, если 254, сразу даём 255, чтобы не терять макс. отклонения (с потерей одного шажка вблизи max)

 

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

 

if ( Stick_yellow_mode OR Stick_red_mode ) then        // Если режим на РУС не зелёный, то ...

 

В общем то, можно было так и записать: if ( NOT Stick_greed_mode  ) then 

 

---------------

 

А почему для определения текущего режима джойстиков ты использовал FTRSTKMODE   а не CURRENTMODE?  Последняя переменная более гибкая, и в отличие от первой она не только "на чтение", но и "на запись".  Я просто интересуюсь, может это оправдано. 

 

Про вычисления -- я не знал, спасибо!

 

По поводу NOT Stick_green_mode  -- ты прав, согласен. У меня там два разных режима на каждой лампочке, поленился переписать. :)

 

Почему не CURRENTMODE -- сначала мне просто не хотелось "отключаться" от лампочек, чтобы было видно, какой же режим включен конкретно, поэтому я взял FTRSTKMODE -- рид-онли, чтобы случайно её нигде не поменять сдуру. :) Кроме того, я ещё отдельно дальше в коде учитываю режим работы ProThrottle, три режима: шаг-колёсико, шаг-виртуальная ось, шаг-кнопки (месс). Если мне память не изменяет, CURRENTMODE же общая для всего?

Share this post


Link to post
Share on other sites

 

 

Почему не CURRENTMODE -- сначала мне просто не хотелось "отключаться" от лампочек, чтобы было видно, какой же режим включен конкретно, поэтому я взял FTRSTKMODE -- рид-онли, чтобы случайно её нигде не поменять сдуру. Кроме того, я ещё отдельно дальше в коде учитываю режим работы ProThrottle, три режима: шаг-колёсико, шаг-виртуальная ось, шаг-кнопки (месс). Если мне память не изменяет, CURRENTMODE же общая для всего?
 

 

Ага, общая. А что, у тебя переключение режима не переключает синхронно лампочки???   Кстати, через CURRENMODE можно задать четыре режима работы от 0 до 3.    Последний лампочками не отбражается, ибо их три :)

Share this post


Link to post
Share on other sites

Почему не CURRENTMODE -- сначала мне просто не хотелось "отключаться" от лампочек, чтобы было видно, какой же режим включен конкретно, поэтому я взял FTRSTKMODE -- рид-онли, чтобы случайно её нигде не поменять сдуру. Кроме того, я ещё отдельно дальше в коде учитываю режим работы ProThrottle, три режима: шаг-колёсико, шаг-виртуальная ось, шаг-кнопки (месс). Если мне память не изменяет, CURRENTMODE же общая для всего?

 

-----

 

Чуток спустя.

 

А.... Понял!  У тебя фактически режим ОДНОМОДОВЫЙ (т.е. вкладки Mode в GUI не используются)  Но зато текущий цвет светодиода в скрипте позволяет реализовать виртуальную МНОГОМОДОВОСТЬ. В твоем случае 2^3 = 8 режимов! :)

Круто..   Правда придется все различия ручками кодировать :)

Share this post


Link to post
Share on other sites

-----

 

Чуток спустя.

 

А.... Понял!  У тебя фактически режим ОДНОМОДОВЫЙ (т.е. вкладки Mode в GUI не используются)  Но зато текущий цвет светодиода в скрипте позволяет реализовать виртуальную МНОГОМОДОВОСТЬ. В твоем случае 2^3 = 8 режимов! :)

Круто..   Правда придется все различия ручками кодировать :)

 

Ага! Шифт у меня, кстати, обрабатывается и через ГУИ и параллельно через скрипт. :)

Доктор, я извращенец? ;)

Вот так выглядит тормоз (отрывок из профиля для Бойни за Британию)

    //    Пользовательские (настроечные) параметры
%DEFINE CONST_Rudder_Dead_Zone_for_Brakes    2   //    Мёртвая зона РН для тормозов (чтобы тормоз не включался при незначительном отклонении РН)
%DEFINE CONST_Toe_Brakes_Dead_Zone            2    //    Мёртвая зона площадок

    //    Входящие оси
%DEFINE J_Pedals                            JS1.A3  // Ось РН на ProPedals
%DEFINE J_LeftToe                            JS1.A1  // Ось левой площадки
%DEFINE J_RightToe                            JS1.A2  // Ось правой площадки
%DEFINE J_Pedals_Centered_For_Brakes        ( [ JS1.A3 > (128 - CONST_Rudder_Dead_Zone_for_Brakes) ]
                                                AND [ JS1.A3 < (128 + CONST_Rudder_Dead_Zone_for_Brakes) ] ) // Если РН не в мёртвой зоне
%DEFINE J_Left_Toe_Pressed                    ( [ JS1.A1 > CONST_Toe_Brakes_Dead_Zone ] )    //    Нажата одна левая площадка
%DEFINE J_Right_Toe_Pressed                    ( [ JS1.A2 > CONST_Toe_Brakes_Dead_Zone ] )    //    Нажата одна правая площадка
%DEFINE J_Both_Toes_Pressed                    ( [ JS1.A1 > CONST_Toe_Brakes_Dead_Zone ] AND [ JS1.A2 > CONST_Toe_Brakes_Dead_Zone ] )    //    Нажаты обе

    //    Внутренние переменные
%DEFINE A_Rudder                            A1    // Тут будем вычислять положение РН
%DEFINE    A_Brake                                A2    // Тут вычислям положение оси тормоза
%DEFINE B_Toe_Brakes_On                     B1    // Внутренний флаг, определяющий, включены ли тормоза или нет, он меняется с кнопки на РУДе
                                                // Отключение нужно затем, чтобы в полёте нажатие на площадки не отклоняло РН
                                                // Т.е. после взлёта отключаем, перед посадкой включаем

%DEFINE Green_LED                            0
%DEFINE Red_LED                                1
%DEFINE Amber_LED                            2                                                
%DEFINE Throttle_Bf109_Mode                   ( [ PROTHRMODE == Red_LED ] ) // Если летим на 109-ке (включена красна лампа на РУД)

    //    Выходящие оси
%DEFINE C_Rudder                            CMS.A1    //    Ось РН
%DEFINE C_Brake                                CMS.A2
%DEFINE C_Brake_Left                        CMS.A3
%DEFINE C_Brake_Right                        CMS.A4                                        

//    Вроде, всё задали...
script    // Понеслась...

    if ( B_Toe_Brakes_On ) then    //    Итак, если тормоза включены, то...
        if ( NOT Throttle_Bf109_Mode ) then    //    Если мы НЕ на 109-ке (НЕ красная лампочка на РУД), то...
            if ( J_Pedals_Centered_For_Brakes ) then    //    Если РН в мёртвой зоне, проверяем
                if ( J_Left_Toe_Pressed AND NOT J_Right_Toe_Pressed ) then //    Если нажата только левая площадка
                    A_Rudder = 128 - J_LeftToe / 2;    //    Отклонить РН на величину нажатия / 2
                                                    //    Делить на два, потому что руль движется в одну сторону только на полхода (а не на 255)
                    //    A_Rudder = 0;    //    Альтернативный вариант -- руль сразу до упора влево,
                                        //    по экспериментам: для Ил-2 ЗС лучше первый, для БзБ этот, для БзС -- вообще лучше с кнопки тормозить
                endif

                if ( NOT J_Left_Toe_Pressed AND J_Right_Toe_Pressed ) then    // Если нажата только правая площадка -- аналогично
                    A_Rudder = 128 + J_RightToe / 2;
                    //    A_Rudder = 255; //    Альтернативно -- до упора вправо
                endif

                if ( J_Both_Toes_Pressed ) then    // Нажаты обе площадки
                    A_Rudder = 128 + J_RightToe / 2 - J_LeftToe / 2;    //    Величина отклонения руля = комбинации величины нажатий
                    //    A_Rudder = 128;    // Как альтернатива -- игнорируем отклонение, считаем, что по ошибке так нажали (удобнее для БзБ).
                endif

                if ( NOT J_Left_Toe_Pressed AND NOT J_Right_Toe_Pressed ) then    // Если ничего не нажато (педали, как мы помним, тоже в МЗ)
                    A_Rudder = 128; //    Руль по центру
                endif
            else    //    А вот если у нас РН не в МЗ, то...
                A_Rudder = J_Pedals;    //    Устанавливаем РН в соответствии с отклонением оси
            endif

            if ( [ J_RightToe > J_LeftToe ] ) then    // Теперь проверяем, какая площадка сильнее нажата
                A_Brake = J_RightToe;    // Если правая, то степень торможения = её нажатию
            else
                A_Brake = J_LeftToe;    // Если левая - торможение равно ей
            endif

        else // Если же мы летим на мессе (красная лампочка на РУД), то...
            A_Rudder = J_Pedals;        //    Руль по любому равен отклонению педалей
            C_Brake_Left = J_LeftToe;    //    Ось левого тормоза = оси левой площадки
            C_Brake_Right = J_RightToe;    //    Ось правого = правой
        endif

    else    //    Если тормоза вообще отключены
        A_Rudder = J_Pedals;    //    Устанавливаем РН в соответствие с педалями
        A_Brake = 0;            //    Обнуляем ось тормоза (а то получается, что при отключении тормоз может остаться зажатым (на посадке весело)
        C_Brake_Left = 0;        //    Раздельные тормоза тоже обнуляем
        C_Brake_Right = 0;
    endif
    
    C_Rudder = A_Rudder;    //    Собственно осталось только выходящие оси правильно поставить, что и делаем
    C_Brake    = A_Brake;

endscript    //    Теперь смело отправляемся тренировать руление
Edited by 72AG_terror
  • Upvote 3

Share this post


Link to post
Share on other sites

Тоже, может, кому интересно будет, я проделал две модификации с джоем, одна лёгкая, другая - относительно сложная и долгая:

 

1. Может, кто не видел такого мода ProThrottle

post-767-0-32007500-1407790860_thumb.jpg

Подклеиваешь небольшой полукруглый (вырезать ножницами) кусочек одёжной "липучки" (она самоклящаяся, продаётся, например, во всяких швейных товарах за копейки), той половины, которая с "крючочками", перед штоком ProThrottle, получается такая удобная штука для определения начала "зоны форсажа" (detent ничем не хуже, чем на Х52). Правда, учтите, что "зону форсажа" придётся подстраивать, потому как липучка достаточно надёжно приклеивается, поэтому заранее определите её размеры в основном симуляторе (например в Ил-2 ЗС надо подстраивать под его 110%), в DCS она настраивается прям в настройках, в других симуляторах -- через скрипт.

 

2. Очень рекомендую, если вы используете ручку настольно (а не напольно или между ног), хотя этот мод время- и трудозатратный и требует роста рук из правильного места, уменьшить ручку Fighterstick в длине. Не секрет, что, так как она есть точная копия реальной ручки в F-16, где а) пилот носит перчатки, б) рука пилота лежит на подлокотнике, то есть он берётся за ручку сверху и ещё опирается локтем, в) пилоты бывают и с большими руками, то ручка слишком длинная. Для нашего же настольного применения она слишком длинная, поэтому берём ручку, выпиливаем её часть и склеиваем эпоксидкой обратно (при этом жертвуем одним винтом), красим из балончика обратно в тёмный матовый, ручка получается такая же прочная, а площадка внизу приходится точно под руку, очень удобно. Минусы -- много времени (пока всё склеится, пока высохнет), ручка, хотя и выглядит практически так же, всё же она чуть менее приятная на ощупь (менее шероховатая из-за краски).

Вот мои фотки:

post-767-0-34396500-1407790865_thumb.jpg

post-767-0-90063800-1407790865_thumb.jpg

 

Вот тут видно размеры части, которую надо выпилить: http://snomhf.exofire.net/fighterRunt.html

Edited by 72AG_terror
  • Upvote 6

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...