PickRelated 158 Posted July 2, 2014 (edited) Смотреть что сгорело. Тут вариантов дофига. Начинать логичнее всего с цепи питания. Она горит чаще всех. Начинать с визуального осмотра. Если не видно выгоревших элементов, идем далее. Если есть электролитические конденсаторы (бочки такие) - смотри на предмет вздутия верхней крышки. Далее мерить мультиметром в режиме прозвонки резисторы, диоды, конденсаторы, предохранители, если есть. Затем мерить сопротивление резисторов, напряжение открытия диодов, и тд. Если сам не найдешь - тогда уже к инженерам или сервисмэнам. Если инструкции недостаточно - youtube в помощь. Там таких видео дофига. Edited July 2, 2014 by PickRelated Share this post Link to post Share on other sites
SVOR 17 Posted July 2, 2014 Спасибо.Только визуально ничего не сгорело. А инженер без схемы разберется ? Share this post Link to post Share on other sites
PickRelated 158 Posted July 2, 2014 Разберется. Наши разбирались Педали не сложнее китайского зарядника. Share this post Link to post Share on other sites
[IB]Zulu 835 Posted July 2, 2014 Не по теме пишу, но все же помогите если кто знает !!!! СЖЕГ педали(замкнул ноги на резюке, ну и, похоже контроллер сгорел). как починить теперь ? Если просто замкнуть ноги на резюке, то походу, ничего страшного случиться не должно. Процу скорее всего ничего не будет. Смотри по питанию. Погляди подается ли вообще напруга на процессор. Еще раз все просмотри и прозвони. Не отлетел ли где провод, пока ты там экспериментировал Share this post Link to post Share on other sites
PickRelated 158 Posted July 2, 2014 Если просто замкнуть ноги на резюке, то походу, ничего страшного случиться не должно. Тогда ток побежит через перемычку и резистора считай будто нет в схеме. Током убьет следующий чувствительный элемент. А то и несколько. Но пробежаться мультиметром по напряжениям тоже стоит. Share this post Link to post Share on other sites
[IB]Zulu 835 Posted July 3, 2014 (edited) Тогда ток побежит через перемычку и резистора считай будто нет в схеме. Током убьет следующий чувствительный элемент. А то и несколько. Но пробежаться мультиметром по напряжениям тоже стоит. Ты прав, но исходя из самых общих суждений. А по факту, надо всегда рассуждать предметно. Я говорил про процессор. Его не убить простым замыканием резюка Смотрим схему: 1. Если замкнуть вывод от процессора на верхний вывод резистора 5 В - ничего не будет ( ведь это равносильно резистору выкрученному в макс.) 2. Если замкнуть вывод от процессора на нижний вывод резистора 0 В - тоже ничего не будет, по аналогичной причине 3. Если замкнуть крайние выводы резистора, то процессору опять же ничего не будет - через ногу процессора ничего не потечет, на ней будет 0 вольт, а ток КЗ потечет на землю от источника 5 В. И если он не защищен, то ОН (источник питания) и только он выйдет из строя. 4. Входы процессора, в зависимости от исполнения, выдерживают приложенное напряжение вплоть до 2 U пит! Так, что я думаю, сердце педалей - "процессор" жив. Надо проверять цепи питания. А если процессор все же умер, то значит там было сделано что то иное, чем просто замыкание выводов резистора Edited July 3, 2014 by [I.B.]Zulu Share this post Link to post Share on other sites
PickRelated 158 Posted July 3, 2014 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
[IB]Zulu 835 Posted July 3, 2014 (edited) Я прав именно исходя из знания законов Кирхгофа и Ома. Я инженер по специальности промышленная электроника и имею опыт работы разработчиком. А самое главное - опыт по спаливанию процессоров. 1. Это будет почти равносильно резистору, выкрученному в MIN (MIN может быть и 10кОм, а мы будем иметь сопротивление перемычки <1 Ом). Если нога сконфигурирована в режиме PULL DOWN, то сгорит к херам если нет защиты. Если нога сконфигурирована в АЦП, то он может сгореть по токовой перегрузке. Не, там вход, а не выход. Подтягивающие резисторы (PULL) настраиваются на выходах только, к входам эти настройки отношения не имеют. А любой вход ты можешь свободно замкнуть на землю. Сам посуди, на этом же выводе ты мог подключить кнопку, которая просто накоротко соединила бы вывод с землей, читай твоя пресловутая перемычка. Чет ты запарился совсем PS. Моё первое образование радиоинженер по разработке РЭС Edited July 3, 2014 by [I.B.]Zulu Share this post Link to post Share on other sites
PickRelated 158 Posted July 4, 2014 Не, там вход, а не выход. Подтягивающие резисторы (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
[IB]Zulu 835 Posted July 4, 2014 Ох, да зачем же с пеной то у рта Вовсе не собираюсь тебя уличить в незнании чего либо. Могу даже закончить писать, раз это вызывает у тебя столько эмоций. -------- Суть ведь не в том, что прав ты или нет, а я супротив тебя, а в резисторе (как ты правильно и заметил). Если это потенциометр, включенный по схеме, которую я привел - ничего процессору не будет, так как у проца в этом случае нога будет входом (а это, без вариантов, либо компаратор, либо готовый АЦП). В какую сторону ты управляющую ножку потенциометра не замыкай, мы получим либо МИН, либо МАХ величины. А замкнутый потенциометр накоротко, нагрузит только источник питания. И другое дело, если автор топикам имел ввиду какой либо иной резистор, а не потенциометр педалей. Вот это и будет частный случай, и там уже может быть что угодно. Ну и потом, ведь мы даже не знаем, что там за проц. Единственное, что могу сказать, что там вроде PIC о восемнадцати DIP ногах, какой именно не смотрел, ибо когда вскрывал, заклеено было гарантийной наклейкой. А у тех древних пиков, туева хуча наименований, на который Uпит от 3,3 до 9 вольт и входы всегда высокомные, без каких либо подтяжек Up OR Down.. Вот Да и не суть это в данной теме, оффтопимс Давай в личку, если чо Share this post Link to post Share on other sites
PickRelated 158 Posted July 4, 2014 Вот Да и не суть это в данной теме, оффтопимс Давай в личку, если чо Никаких эмоций. А спорим, действительно, ни о чем. SVOR вообще потерял интерес к беседе. Прошу прощения у топик стартера за флуд. Не люблю это дело, но сам гажу в комментах. Вот такой я ханжа. Надо было SVORу вообще в личку писать. Share this post Link to post Share on other sites
[IB]Zulu 835 Posted July 4, 2014 А спорим, действительно, ни о чем. SVOR вообще потерял интерес к беседе. Точно. Либо забыл, что вопрошал Share this post Link to post Share on other sites
SVOR 17 Posted July 18, 2014 сори отсутствовал...( серьезная дискуссия получилась ) сгорел (задымился) реостат - 3 ноги. разобрал - на дорожках выгоревшие места. выкинул его.. собрал педали без него , подключил - CH Control Manager не видит педали. вот я и решил(с перепугу) что сгорел контроллер. Однако (вот тут прошу сильно не пинать) после перезагрузки подключил еще раз и О Чудо -заработало. Т.Е контроллер жив. сгорел только резюк Share this post Link to post Share on other sites
[IB]Zulu 835 Posted August 2, 2014 Выкладываю командный файл привязки профиля к дефолтным БзС командам. Изменения соответствуют 73-74 РД. Если кто не знает, то этот файл позволяет навсегда забыть про необходимость переназначать кнопки под себя каждый раз, после выхода обновлений БзС или переустановке игры. Брать тут: http://www.ch-hangar.com/forum/index.php/files/file/336-boscmc/ 3 Share this post Link to post Share on other sites
[IB]Zulu 835 Posted August 2, 2014 (edited) И вот еще, при общении в ТС выясняется, что многие даже не знают о такой замечательной функции, как "Печать назначений кнопок в профиле". Жмем вот эту кнопочку: И уточнив программе, что именно хотим, получаем примерно такие вот картиночки для каждого из своих контроллеров (можно на принтер, можно в JPG): Вот Edited August 2, 2014 by [I.B.]Zulu 3 Share this post Link to post Share on other sites
dragonlore 167 Posted August 2, 2014 (edited) Выкладываю командный файл привязки профиля к дефолтным БзС командам. Изменения соответствуют 73-74 РД. Если кто не знает, то этот файл позволяет навсегда забыть про необходимость переназначать кнопки под себя каждый раз, после выхода обновлений БзС или переустановке игры. Брать тут: http://www.ch-hangar.com/forum/index.php/files/file/336-boscmc/ Спасибо) Зарегистрировался, не даёт скачать( И без регистрации не скачивает, может на какой другой хостинг? Там когда на сайте регистрируешься сразу доступ к форумам и файлам закрывается. Edited August 2, 2014 by -DED-Gray Share this post Link to post Share on other sites
[IB]Zulu 835 Posted August 2, 2014 Странно. Может из-за того, что ты недавно... Не вопрос, пожалуйста: BoS.rar 1 Share this post Link to post Share on other sites
dragonlore 167 Posted August 2, 2014 Странно. Может из-за того, что ты недавно... Не вопрос, пожалуйста: BoS.rar Спасибо огромное Share this post Link to post Share on other sites
=J13=Moroka 742 Posted August 4, 2014 Выкладываю командный файл привязки профиля к дефолтным БзС командам. Изменения соответствуют 73-74 РД. Если кто не знает, то этот файл позволяет навсегда забыть про необходимость переназначать кнопки под себя каждый раз, после выхода обновлений БзС или переустановке игры. Брать тут: http://www.ch-hangar.com/forum/index.php/files/file/336-boscmc/ Вот спасибо! Супер!!!! Share this post Link to post Share on other sites
=J13=Moroka 742 Posted August 4, 2014 (edited) Кстати сказать, Loft и Co с тех времен, когда они были ещё FLUING BARANS неравнодушны к продукции CH. И одни из первых ,по мере освоения продукции выкладывали статьи. Посему командные файлы БЗС просто обязаны легко вкладываться в СН Control Manager... Edited August 4, 2014 by =J13=Moroka Share this post Link to post Share on other sites
[IB]Zulu 835 Posted August 4, 2014 (edited) Кстати сказать, Loft и Co с тех времен, когда они были ещё FLUING BARANS неравнодушны к продукции CH. И одни из первых ,по мере освоения продукции выкладывали статьи. Посему командные файлы БЗС просто обязаны легко вкладываться в СН Control Manager... О,да. Хороший и хоршоперевариваемый материал для быстрого старта Сохраню как эту страничку пожалуй, вдруг кому понадобиться, а сайт баранов будет в ауте, гы Edited August 4, 2014 by [I.B.]Zulu Share this post Link to post Share on other sites
=J13=Moroka 742 Posted August 5, 2014 Нужна помошь !!! Не могу сладить с калибровкой 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
NobbyNobbs 6318 Posted August 5, 2014 но! шаг значений для микростика становится 2! аналогично. а виндой оно калиброваться не хочет, говорит пользуйтесь фирменным софтом. Share this post Link to post Share on other sites
=J13=Moroka 742 Posted August 5, 2014 ...Похоже это особенность девайса... Сейчас снял "шляпу" с микростика - диапазон значений расширился: по Х 30...225, по Y 35...220... т.е. если изменить форму "шляпки", а заодно поднять её повыше и рассверлить пошире отверстие под неё же, то видимо можно будет ещё улучшить цифры... Share this post Link to post Share on other sites
72AG_terror 115 Posted August 8, 2014 (edited) Есть следующее: "Электротриммирование" по всем осям: с сохранением полного диапазона отклонений, как на Ка-50: нажал кнопку -- ручка (и педали) запомнили, где они (центр смещается), при этом сохраняется полный диапазон отклонения (scaling оси). Коррекция электротриммирования РУСа и педалей по пипке на РУСе. Игровыми триммерами можно вообще после этого не пользоваться + появляются "триммера" там, где их нет (РН на мессе и проч.) + возможность мгновенно затриммировать вираж. "Подруливание": отклонение ручки на 10% с помощью крестовой хатки на РУСе. На ProThrottle -- Объединение Сектора газа и Шага винта (одновременное движение) с коррекцией шага (точки присоединения) от хатки, с возможностью отсоединения/присоединения на лету (управление, естественно, возможно от хатки) и мгновенного макс/мин шага. Сглаживание оси (например шумящей оси колёсика). Ещё есть раздельное торможение на советские -- но в БзС неудобно, только мешает, убрал. Изменение кривой на лету (с учётом триммирования). Включение форсажа в 10% зоне с 2% мёртвым участком (95%-97% -- полный газ, >97% -- форсаж) -- хорошо работает с подклеиванием "ограничителя" из одёжной липучки. Алгоритмы сложные для разбора-понимания. Что-то надо из этого? Edited August 8, 2014 by 72AG_terror 2 Share this post Link to post Share on other sites
NobbyNobbs 6318 Posted August 8, 2014 пользоваться вряд ли буду, но из праздного любопытства вот это бы посмотрел: 6. Изменение кривой на лету (с учётом триммирования). Share this post Link to post Share on other sites
[IB]Zulu 835 Posted August 9, 2014 ...Похоже это особенность девайса... Сейчас снял "шляпу" с микростика - диапазон значений расширился: по Х 30...225, по Y 35...220... т.е. если изменить форму "шляпки", а заодно поднять её повыше и рассверлить пошире отверстие под неё же, то видимо можно будет ещё улучшить цифры... Да, да. Особенность. Как то давно об этом писали разработчики. Типа, министик и нужен то, что бы оп LCD прицелу маркер водить (ну там Su-27, A-10 и т.д.) а там и такой точности за глаза хватает. Проблему править не стали, так как желающих иметь более эргономичную шляпку стика, было на порядок больше желающих иметь полный диапазон перемещения... Что то так... Share this post Link to post Share on other sites
[IB]Zulu 835 Posted August 9, 2014 (edited) Есть следующее: "Электротриммирование" по всем осям: с сохранением полного диапазона отклонений, как на Ка-50: нажал кнопку -- ручка (и педали) запомнили, где они (центр смещается), при этом сохраняется полный диапазон отклонения (scaling оси). Коррекция электротриммирования РУСа и педалей по пипке на РУСе. Игровыми триммерами можно вообще после этого не пользоваться + появляются "триммера" там, где их нет (РН на мессе и проч.) + возможность мгновенно затриммировать вираж. "Подруливание": отклонение ручки на 10% с помощью крестовой хатки на РУСе. На ProThrottle -- Объединение Сектора газа и Шага винта (одновременное движение) с коррекцией шага (точки присоединения) от хатки, с возможностью отсоединения/присоединения на лету (управление, естественно, возможно от хатки) и мгновенного макс/мин шага. Сглаживание оси (например шумящей оси колёсика). Ещё есть раздельное торможение на советские -- но в БзС неудобно, только мешает, убрал. Изменение кривой на лету (с учётом триммирования). Включение форсажа в 10% зоне с 2% мёртвым участком (95%-97% -- полный газ, >97% -- форсаж) -- хорошо работает с подклеиванием "ограничителя" из одёжной липучки. Алгоритмы сложные для разбора-понимания. Что-то надо из этого? Примеры никогда не бывают лишними. Если есть возможность, вставь туда комментарии, и выложи архивом. Всегда полезно. Спасибо А форсаж я себе сделал аля ДаблКлик - т.е. от быстроого двойного упирания Тротла в МАКС. Очень удобно! Двинул до конца дважды (кратко, - тык-тык) включился форсаж. Назад двинул, опять нормальный режим. Edited August 9, 2014 by [I.B.]Zulu Share this post Link to post Share on other sites
72AG_terror 115 Posted August 9, 2014 (edited) пользоваться вряд ли буду, но из праздного любопытства вот это бы посмотрел: Даю отрывко про нелинейность (так понял, она интересует), триммирование оттуда, чтобы не затуманивало, убрал. %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 August 9, 2014 by 72AG_terror 2 Share this post Link to post Share on other sites
=J13=Moroka 742 Posted August 9, 2014 (edited) Даю отрывко про нелинейность (так понял, она интересует), триммирование оттуда, чтобы не затуманивало, убрал. ... Правда, разобраться в чужом коде с налета сложновато... но интересно! Так что во-первых спасибо за работу... ..и помогай разбираться... - Непонятно, например, почему A_Non_Linear_Coef считается по длинным формулам аж в две строки если это всего лишь константа? - я так понял, что переключая моды-лампочки где то в неописанной части кода ты используешьм другую CONST_Stick_Non_Linearity и соответственно другую нелинейность? ... Окей, докомменчу и прилеплю на днях. Очень хорошо!... Если сил хватит, выкладывай всё! Всегда интересны примеры для лучшего понимания, "мотания на ус", ну и просто утащить для личного использования ... Интересно и про тормоза... тут уже мы с Nobby отписались по ним по разу... интересны ещё алгоритмы... Edited August 9, 2014 by =J13=Moroka Share this post Link to post Share on other sites
[IB]Zulu 835 Posted August 9, 2014 - Непонятно, например, почему A_Non_Linear_Coef считается по длинным формулам аж в две строки если это всего лишь константа? Полагаю это для наглядности самому себе, что бы не забыть, откуда и почему именно такое число для коффициента. Share this post Link to post Share on other sites
[IB]Zulu 835 Posted August 9, 2014 (edited) 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 August 9, 2014 by [I.B.]Zulu Share this post Link to post Share on other sites
=J13=Moroka 742 Posted August 9, 2014 (edited) Уточню, с дробными значениями работать не можем, действительно, однако вычисления всегда дают значение типа REAL поэтому максимальное число в промежуточных вычислениях может быть очень большим.. Как удалось выяснить опытным путем (методом наблюдения результата при вычитании двух больших чисел), CMS использует для своей целочисленной арифметики 4-х байтные значения в диапазоне ~ от ‑2147483648 до 2147483647. (Кажется это тип INTEGER во всяких бейсиках...) Edited August 9, 2014 by =J13=Moroka 1 Share this post Link to post Share on other sites
[IB]Zulu 835 Posted August 9, 2014 Ага. Спасибо. Похоже на это. Разрабы называют тот тип REAL. Есть такой в ассемблерах? Share this post Link to post Share on other sites
[IB]Zulu 835 Posted August 10, 2014 Нашел ошибку в своем командном файле Bos.cmc выложенном в топике № 137 Можно заново его перекачать, он обновлен. Можно вручную. Вот исправление: Lights_Landing HOLD RSHF l 2 Share this post Link to post Share on other sites
72AG_terror 115 Posted August 11, 2014 Правда, разобраться в чужом коде с налета сложновато... но интересно! Так что во-первых спасибо за работу... ..и помогай разбираться... - Непонятно, например, почему 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
[IB]Zulu 835 Posted August 11, 2014 Почему не CURRENTMODE -- сначала мне просто не хотелось "отключаться" от лампочек, чтобы было видно, какой же режим включен конкретно, поэтому я взял FTRSTKMODE -- рид-онли, чтобы случайно её нигде не поменять сдуру. Кроме того, я ещё отдельно дальше в коде учитываю режим работы ProThrottle, три режима: шаг-колёсико, шаг-виртуальная ось, шаг-кнопки (месс). Если мне память не изменяет, CURRENTMODE же общая для всего? Ага, общая. А что, у тебя переключение режима не переключает синхронно лампочки??? Кстати, через CURRENMODE можно задать четыре режима работы от 0 до 3. Последний лампочками не отбражается, ибо их три Share this post Link to post Share on other sites
[IB]Zulu 835 Posted August 11, 2014 Почему не CURRENTMODE -- сначала мне просто не хотелось "отключаться" от лампочек, чтобы было видно, какой же режим включен конкретно, поэтому я взял FTRSTKMODE -- рид-онли, чтобы случайно её нигде не поменять сдуру. Кроме того, я ещё отдельно дальше в коде учитываю режим работы ProThrottle, три режима: шаг-колёсико, шаг-виртуальная ось, шаг-кнопки (месс). Если мне память не изменяет, CURRENTMODE же общая для всего? ----- Чуток спустя. А.... Понял! У тебя фактически режим ОДНОМОДОВЫЙ (т.е. вкладки Mode в GUI не используются) Но зато текущий цвет светодиода в скрипте позволяет реализовать виртуальную МНОГОМОДОВОСТЬ. В твоем случае 2^3 = 8 режимов! Круто.. Правда придется все различия ручками кодировать Share this post Link to post Share on other sites
72AG_terror 115 Posted August 11, 2014 (edited) ----- Чуток спустя. А.... Понял! У тебя фактически режим ОДНОМОДОВЫЙ (т.е. вкладки 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 August 11, 2014 by 72AG_terror 3 Share this post Link to post Share on other sites
72AG_terror 115 Posted August 11, 2014 (edited) Тоже, может, кому интересно будет, я проделал две модификации с джоем, одна лёгкая, другая - относительно сложная и долгая: 1. Может, кто не видел такого мода ProThrottle Подклеиваешь небольшой полукруглый (вырезать ножницами) кусочек одёжной "липучки" (она самоклящаяся, продаётся, например, во всяких швейных товарах за копейки), той половины, которая с "крючочками", перед штоком ProThrottle, получается такая удобная штука для определения начала "зоны форсажа" (detent ничем не хуже, чем на Х52). Правда, учтите, что "зону форсажа" придётся подстраивать, потому как липучка достаточно надёжно приклеивается, поэтому заранее определите её размеры в основном симуляторе (например в Ил-2 ЗС надо подстраивать под его 110%), в DCS она настраивается прям в настройках, в других симуляторах -- через скрипт. 2. Очень рекомендую, если вы используете ручку настольно (а не напольно или между ног), хотя этот мод время- и трудозатратный и требует роста рук из правильного места, уменьшить ручку Fighterstick в длине. Не секрет, что, так как она есть точная копия реальной ручки в F-16, где а) пилот носит перчатки, б) рука пилота лежит на подлокотнике, то есть он берётся за ручку сверху и ещё опирается локтем, в) пилоты бывают и с большими руками, то ручка слишком длинная. Для нашего же настольного применения она слишком длинная, поэтому берём ручку, выпиливаем её часть и склеиваем эпоксидкой обратно (при этом жертвуем одним винтом), красим из балончика обратно в тёмный матовый, ручка получается такая же прочная, а площадка внизу приходится точно под руку, очень удобно. Минусы -- много времени (пока всё склеится, пока высохнет), ручка, хотя и выглядит практически так же, всё же она чуть менее приятная на ощупь (менее шероховатая из-за краски). Вот мои фотки: Вот тут видно размеры части, которую надо выпилить: http://snomhf.exofire.net/fighterRunt.html Edited August 11, 2014 by 72AG_terror 6 Share this post Link to post Share on other sites