Самодельный передатчик (часть 2)
Вы же понимаете хорошая постановка задачи - это 80% программы
Ы! Я, кажется, в личке писал - я 7 лет оттрубил в софтверной фирме, аналитиком-постановщиком задач… 😒
Потому иногда буквоедствую не по делу. Привычка. Профессиональная деформация. Сорри глубокое…
Давайте рисовать (ссылка на файл с рисунком):
За основу взята “Футаба 6EX” - больше мне опереться не на что.
Считаем минимальное и максимальное время канального импульса 1mS и 2 mS (ось “А”), закладываемся в то, что это по 140% отклонения качалки в каждую сторону (как 100 канального стика + 40% от триммирования и микширования). Если EPA установлены в -100%…+100% (ось “B”), и расходы стика в -100%…+100% (ось “C”), то по зеленым стрелкам рассчитываем -100% и +100% канального импульса и масштабируем -100% стика в -100% канального импульса, а +100% стика - в +100% канального импульса. В процессе эксплуатации от значения стика по красным стрелкам получаем потребное время канального импульса. 100% стика дадут 100% импульса, 40% могут добавить микшеры, итого получим 140%. Если микшеры или неизвестно кто еще в сумме со стиком дадут более 140% - отклонение качалки будет все равно 140%, лишнее просто отрежем “исходящим контролем”.
Теперь посмотрим на работу при установке EPA в -100%…+100% (ось “D”) и расходах -80%…+140% (ось “E”).
Сначала “-80%”. Расчет по зеленым стрелкам. Зная, что -140% EPA равно 1mS, определяем время канального импульса для -80% (значение расхода). Масштабируем -100% расхода в это канальное время. В процессе эксплуатации от значения стика по красным стрелкам получаем потребное время канального импульса. 100% стика дадут 80% импульса, 40% могут добавить микшеры, итого получим 120%. Если микшеры или неизвестно кто еще в сумме со стиком дадут более 140% - отклонение качалки будет все равно 140%, лишнее просто отрежем “исходящим контролем”.
Теперь “+140%”. Расчет по зеленым стрелкам. Зная, что +140% EPA равно 2mS, определяем время канального импульса для +140% (значение расхода). Масштабируем +100% расхода в это канальное время. В процессе эксплуатации от значения стика по красным стрелкам получаем потребное время канального импульса. 71% стика дадут 100% импульса, 40% могут добавить микшеры, итого получим 140%. А 100% стика дадут 140% импульса если микшеры или кто-то еще что-то добавит получится больше, но все, что свыше 140 отрежется “исходящим контролем”.
Все так?
Еще чего-нибудь нарисовать?
Думаю, большинство из присутствующих сидели за рулем автомобиля… Представьте теперь, что один оборот рулевого колеса поворачивает колеса, а второй оборот уже не влияет на их положение 😮…
Не совсем корректное сравнение, КМК. У вас, скорее, не автомобиль с рулем, а корабль с одним рулем и тремя румпелями. Вы держите один румпель, а два других - у помощников, которые вам даже и не очень сильно подчинены. У вас задача - держать курс по компасу, у первого помощника - парировать, скажем, порывы ветра, а у второго - обеспечивать красивую синусоиду кильватерного следа. Вам надо срочно курс поменять. Вы свой румпель на упор положили - а лопасть всего на 70% отклонилась. Порыв ветра идет, и все нарастает. Второй помощник компенсирует, значить, в меру своего разумения…
И, заметьте, каждый помошник имеет право обидеться, что его руль уже на упоре, а лопасть недоотклонена. Или что его румпелю до упора еще далеко, а лопасть все, уперлась в корпус. Вы им мешаете ничуть не меньше, чем они вам.
Вариантов решения примерно два:
- Вы объявляете немножко более главным, и говорите, что угол ±70 - чисто ваш. Большего обязуетесь не требовать. Но максимального угла отклонения (±100) Вы своим румпелем никогда не достигнете. Какие права будут у помощников - уже не ваше дело. Может быть они вообще на вахте никогда не появятся.
- Вы объявляете себя самым главным и работаете во всем диапазоне отклонения, от минимума до максимума (±100). Но тогда не обижайтесь, что Вы еще не добрали 20 градусов, а руль уже на упоре - один из помощников добавил +30 (да еще этот урод и сердится, что он хотел добавить 30, а добавилось всего 20).
Еще варианты?
Мне кажется, некоторая путаница возникает из-за двух понятий - “расходы” и “конечные точки”!
“Конечные точки” - это те положения, за которые серва не имеет права заходить ни при каких условиях, ибо сломает себя или модель… “Расходы” - это установленные пользователем пределы отклонения рулевых поверхностей для комфортного управления… За пределы “расходов” (но не далее “крайних точек”) машинка , мне думается, может отклоняться при микшировании нескольких каналов…
Для “умных” серв установка “крайних точек” возможна программированием самой сервы, для обычных серв это надо делать в передатчике… В имеющихся у меня передатчиках для этого предусмотрена общая функция - EPA! Именно потому, что в EPA объеденены понятия “крайних точек” и “расходов” - возникают некоторые затруднения с их установками 😦… Хотя, пока микшеры не подключаешь, проблем особых нет…
Но если возникает необходимость микшировать каналы, то с “процентами” надо разобраться 😠… А тем более, если самому писать программу, высчитывающую эти самые “проценты”…
Не уверен, что я до конца “въехал” в диаграмму, предложенную EagleB3, но, мое мнение, ход стика всегда должен оставаться полным для любых установок “расходов” и “крайних точек”…
Счас попробую тоже графически изобразить свое видение (если получится) 😵…
Для EagleB3:
Вы невнимательно читали мои посты 😃!
Я ж не против того, что “стик уперся, а руль еще не дошел до нужного положения”! Я согласен поделить права на румпель с помощниками или даже совсем отдать их (пусть другие работают 😉)…
Я возражаю против ситуации, когда у меня или у моих помощников еще есть, куда двигать руппеля, а руль уже “встал колом”… мол, “хватит- наработался!”😁
P.S. Запутался с румпелями и рулями!
Не моряк, однако…
Я возражаю против ситуации, когда у меня или у моих помощников еще есть, куда двигать румпеля, а руль уже “встал колом”… мол, “хватит- наработался!”
Это значит, что вы видите правильное решение проблемы по первому варианту, но с маленькой оговоркой: требуете так настроить управление, чтобы руль лег на борт ровно тогда, когда все три румпеля лягут на упоры в нужном направлении. Не раньше и не позже. И каждому румпелю Вы при этом обязаны назначить предел, в которых он может влиять на руль.
В приведенном мной рисунке это значит, что “запас в 40%” использоваться не должен; EPA используются как предельные точки отклонения.
Далее необходимо разобраться с вариантами построения алгоритма. Например, вот вариантик для начала. Управляем первым каналом (“Первый румпель”):
- первый канал считаем “главным”. Задаем для него расход. Расход более 100% в этом случае теряет какой-либо смысл. (Но надо еще про это подумать! Помогайте!..)
- для “второго румпеля” задается % микширования (допустим, 40%), он достигается всегда при 100 отклонении ручки стика второго канала - без учета установленного для второго канала расходов;
- для “третьего румпеля” задается % микширования (допустим, 30%), он достигается всегда при 100 отклонении ручки стика третьего канала- без учета установленного для третьего канала расходов;
- главный канал берется с учетом расходов. Все эти проценты становятся весовыми коэффициентами (долями):
– a) для расхода главного канала 100% получается 100+40+30 = 170 долей
– б) для расхода главного канала 25% получается 25+40+30 = 95 долей - EPA машинки первого канала пересчитывается по полученному коэффициенту в “тики сервы” (миллисекунда/доля),
- При эксплуатации виртуальное положение стика главного (первого) канала (0…100% для примера “а” и 0…25 для примера “б”) пересчитывается через “тики сервы” в значение времени для машинки первого канала;
- При эксплуатации абсолютное положение стиков микшируемых (второго и третьего) каналов (0…100%) пересчитывается через “тики сервы” в добавку времени для машинки первого канала.
- Делаем проверку (“обрезание”) на невыход за минимальное/максимальное время канала и посылаем посчитанное время на машинку.
Но еще надо продумать как быть с возможным возникновением закольцовок. Типа “первый канал микшируется на второй, второй канал микшируется на третий, третий канал микшируется на первый”.
Нормальный алгоритм, не плохой и не хороший, он просто вот такой.
При рализации этого алгоритма потенциальные грабли, вывихивающие мозг:
- проценты микширования (устанавливаемые во втором и третьем канале) делаются чистой абстракцией. Пилот сам должен помнить (и считать… ощущать…), что реально он оперирует вот теми самыми весовыми коэффициентами. Почему? Потому, что % микширования нельзя взять в качестве % от EPA, так как положение стика главного канала с учетом расходов не может быть % EPA. В приведенном примере 25+40+30 = 95, а вовсе не 100. Можно держать эту сумму в голове, можно сделать калькулятор в программе кодера, можно делать контроль при сохранении настроек на то, что сумма расхода главного канала и всех микшеров, завязанных в первый канал равна точно 100%…
Вот мои “художества” 😊…
Зеленым нарисован микшируемый канал (один пока) и его процент влияние на максимальные “расходы”…
Понятно, что другим может быть совсем непонятно, что я тут изобразил 😃 (так же, как и с объяснениями на словах)… но… как умеею 😉…
Знаю, что любую геометрию можно описать формулами, но проделать это для мною же нарисованного - не в силах 😵!
А вот случай “перекрестного” микширования (“первый канал микшируется на второй, второй канал микшируется на третий, третий канал микшируется на первый”) совсем не представляю, ни зачем это надо, ни как сделать 😃…
А вот случай “перекрестного” микширования (“первый канал микшируется на второй, второй канал микшируется на третий, третий канал микшируется на первый”) совсем не представляю, ни зачем это надо, ни как сделать 😃…
Зачем - не важно. Как сделать - микшеры назначить.
Но если такое перекрестное или кольцевое микширование возможно, значит:
- либо такое миширование должно быть запрещено идеологически и программа кодера должна препятствовать организации таких завязок;
- либо алгоритм управления должен корректно его реализовывать.
Я тему читал всю (но давно) и, мне кажется, здесь уже была эта ссылка rconline.ru/modules/smartsection/item.php?itemid=6…
Если да, и уважаемые авторы программы это читали, то можно коротко пояснить… обработка каких функций, использованных в обсуждаемом кодере не рассмотрена в статье по ссылке?
Просто, я статью бегло читал и ранее, и сейчас просмотрел… Вроде бы, в ней рассмотрены и конечные точки, и микширование, и экспоненты 😃…
Чего не хватает для математики кодера?
"Поэтому вопрос к Denn (и я удаляюсь паять кодер):
Так все же, тот факт, “что ручка продолжает двигаться, а машинка уже стоит” - это нормально или “имеет место неверно сконструированный канал”?! "
Ещё раз попробую объяснить: ручка продолжает двигаться, а машинка уже стоит - это нормально при работе микшера. Это значит, что все ручки поставлены в такое положение , что модель должна лететь ( или ехать … ) с таким положением руля.
Если миксеров в канале нет, то , конечно, это не совсем правильно, хотя при желании можно оправдать и такой режим. Всё зависит от необходимости управления.
Лично меня такое положение вещей вполне устраивает, как и JR , и Hitec.
И особенно приятно использование аналоговой крутилки для настройки этих положений!
Ещё раз попробую объяснить:
Спасибо за попытку!
К сожалению, по причине моего ничтожного опыта обращения с микшерами, я опять ничего не понял 😊…
А может, у меня с Вами логика не совпадает?
К примеру, такой логический ход мои мозги не переваривают:
ручка продолжает двигаться… Это значит, что все ручки поставлены
Как может двигаться то, что уже поставлено (остановлено, то есть) 😃?
Предлагаю прекратить дискуссию, тем более, что вот такой аргумент
Лично меня такое положение вещей вполне устраивает…
для меня абсолютно бесспорен! Ибо каждый имеет право на личные предпочтения!❗
А вот в том, что такое положение вещей устраивает
как и JR , и Hitec.
у меня есть определенные сомнения, но они требуют проверки, поэтому возражать пока не буду… Пойду читать инструкции ☕… Хайтек у меня есть, ДжиЭр есть у товарища…
Разбрался кажись.
void LCD_clear (void)
{
unsigned char x, y;
for (y=1; y<7; y++)
for (x=0; x<84; x++) buff[y][x]=0;
void LCD_refresh (void) // Обновление дисплея (отображение буффера)
{
unsigned char i,j;
LCD_DC=0 ;
spi(64);
LCD_DC=1;
for(i=1; i<7; i++)
{
LCD_DC=0 ;
spi(64+i);
spi(128);
LCD_DC=1;
for (j=0; j<84; j++) spi(buff[i][j]);
}
}
void LCD_pixel (unsigned char x, unsigned char y, unsigned char color)
{ // Рисуем пиксель. Все остальные процедуры работают через нее
unsigned char i, bt;
//x=83-x;
//y=47-y;
y=y+8;
i=y>>3;
bt=1<<(y & 0x7);
if(color) buff[i][x]|=bt;
else buff[i][x]&=(~bt);
}
По мотивам msv1.8 3310 upsidedown
Можно, я чуть выскажу свое видение микширования и ЕРА? 😃
Для микширования можно применять два метода.
1 - как сделано у Фокуса. Просто складываем каналы умноженные на их весовые (процентные) коеффициенты.
2 - с пересчетом весовых коеффициентов. Для этого сначала расчитываем новые коеф (К2) пропорционально установленным пользователем, но так, чтобы их сумма давала 100% (или ЕРА). Т.е. если пользователь установил смешивание 3 каналов с коеф. 50, 40 и 30, то расчетные К2 будут 50/(50+40+30)*100=42, 40/(50+40+30)*100=33 и 30/(50+40+30)*100=25. В этом расчете 100 - это ЕРА. Такой расчет гарантирует, что при максимальных отклонениях стиков всех микшируемых каналов не даст машинке выйти за ЕРА. И если мы изменим ЕРА, то соотношение влияния стиков на результат не изменится. Даже если пользователь установит для всех трех каналов 100% микширования, то каждый из каналов получит только по 33% и равную долю влияния на результат. Не будет ситуации, что стик еще движется, а машинка уже уперлась. И функция двойных расходов в таком случае решается как изменение ЕРА в зависимости от какого-либо переключателя или даже крутилки.
Сорри за многабукафф 😃
2 - с пересчетом весовых коеффициентов
Вот этот алгоритм и описан в посте #2698. Неужели настолько неузнаваемо? 😊
А вот идея менять расходы движением EPA мне кажется не хорошей. Потому, что в одном месте приходится оперировать весовыми коэффициентами каналов (процентами), а в другом - градусами или миллиметрами.
Гораздо более юзефульно, КМК, определять общий коэффициент канала “одинарные/двойные” из установленных значений расходов и использовать этот коэффициент. На примере sslobodyan’а:
Двойные расходы = 100, одинарные = 60. Считаем коэффициент 60/100 = 0,6.
Веса установлены 50, 40 и 30 (сумма=120); веса, приведенные к 100% составят 0.42, 0.33 и 0,25 соответственно (в сумме = 1).
Полное (100%) отклонение главного стика канала даст:
- на двойных расходах 100*0,42=42%
- на одинарных расходах 100*0,42*0,6=25%
Полное (100%) отклонение стика второго канала даст: - на двойных расходах 100*0,33=33%
- на одинарных расходах 100*0,42*0,6=20%
Полное (100%) отклонение стика третьего канала даст: - на двойных расходах 100*0,25=25%
- на одинарных расходах 100*0,25*0,6=15%
Сумма полного отклонения трех стиков: - на двойных расходах 42%+33%+25%=100% (А)
- на одинарных расходах 25%+20+15%=60%. Как просили. (Б)
И при этом не надо никуда EPA перестраивать. EPA как параметр геометрии самолета или… Не знаю как лучше сказать… “На первый вылет - расходы поменьше”. Смысл не в расходах поменьше, а в уменьшении предельно допустимых углов отклонений рулей. Вот это - в чистом виде работа для EPA. КМК.
Проценты (А) и (Б), которые мы получили - это проценты от длительности канального импульса, установленного через EPA. Осталось добавить (вычесть) триммирование - и все, можно грузить длительность в таймер.
Триммирование, КМК, просится в процентах от установленного EPA, ибо тоже имеет прямое отношение к геометрии самолета. Получим простое смещение нуля рулевой машинки (на графике из поста #2696 вертикальная ось, от которой откладываются + и - рулевой машинки двигается триммированием влево-вправо).
И при этом не надо никуда EPA перестраивать. EPA как параметр геометрии самолета или… Не знаю как лучше сказать… “На первый вылет - расходы поменьше”. Смысл не в расходах поменьше, а в уменьшении предельно допустимых углов отклонений рулей. Вот это - в чистом виде работа для EPA. КМК.
Ой встряну немножко.
Сразу оговорюсь, что ничего серьезней этого кодера я не видел.
Мне интересно, почему люди у которых есть аппа с возможностью изменения EPA, не могут поставить эксперимент? И выставить-таки все точки над ё. Хотя, может просто времени не хватает 😒
С выше приведенной цитатой не совсем согласен. Ибо даже в очень бюджетных аппах есть переключатель именно расходов. И я не думаю, что нужно на первых полетах рулить этими расходами посредством EPA. Микроскопом гвозди забивать. Хотя, может, я чего-то в высказывании недопонял.
Почитав несколько инструкций от разных футаб (в них говорится, что используется EPA именно для ограничения движения машинки по конкретному каналу. И как пример дается организация предотвращения перемещения манинки в одном из направлений…), хочу задать такой вопрос:
А если мы EPA поставим в 0 - то машинка отклоняться не будет. А стик на аппе мы двигаем. Я не думаю, что тут идеология нарушилась. И что так быть не должно? Машинка все-таки должна рулиться? Стоять как вкопаная она должна?
Ну КМК все в кодере работает вполне корректно в отношении EPA.
Ребят, Расходы - имхо это логика. Конечные точки - имхо это физика. Вот и все.
Т.е в качестве конечных точек задается предельное положение качалки сервы, при котором серва не упрется в свой ограничитель или не начнет ломать рулем направления руль высоты. А расходы - это уже как вам летать комфортнее.
Посмотрите на ту же футабу к примеру. Там сейчас есть аналогичная, но более продвинутая функция “виртуальное кольцо”. Функция позволяет настроить “конечные точки” серв автомата перекоса таким образом, чтобы тарелка перекоса при угловых положениях стика по одной оси и по двум осям наклонялась от вертикали на один и тот же угол, который максимален для данной тарелки перекоса физически.
Чего спорить то? ЕРА должно ограничивать движение сервы, даже если стик не уперся. Контролировать, чтобы использовался весь ход стика - должен ЮЗЕР при помощи расходов/коэфициентов микширования. По сути - ЕПА это ограничение длительности канального импулься дла конкретной физической реализаци модели.
Посмотрите на ту же футабу к примеру.
Хорошее предложение!
Давайте посмотрим, как Вы настраиваете “виртуальное кольцо”
…таким образом, чтобы тарелка перекоса при угловых (?) положениях стика… наклонялась от вертикали на один и тот же угол, который максимален для данной тарелки перекоса физически.
Если я правильно понял термин “угловое положение” стика, как “стик уперся в угол”, то мне понятна логика такой настройки… Без вопросов!
А вот следующая Ваша фраза уже вызвала у меня недоумение
ЕРА должно ограничивать движение сервы, даже если стик не уперся.
Вы действительно можете проделать такой “фокус” на своей футабе?
Контролировать, чтобы использовался весь ход стика - должен ЮЗЕР при помощи расходов/коэфициентов микширования.
Согласен, если фразу закончить: “устанавливая их (расходы) такими, чтобы при крайних положениях стика обеспечивалось комфортное управление и отсутсвие механического ограничения хода машинки”.
А если мы EPA поставим в 0 - то машинка отклоняться не будет.
Будет! Но чтобы это заметить, потребуется микроскоп 😉!
Ну КМК все в кодере работает вполне корректно в отношении EPA.
Не имею морального права в этом сомневаться - нет пока у меня это кодера 😦…
Но “с какого перепугу” были написаны посты 2655 и 2656 ?!
Перечитайте!
Мне интересно, почему люди у которых есть аппа с возможностью изменения EPA, не могут поставить эксперимент? И выставить-таки все точки над ё
Да могут… ставили!
Только кто сказал, что за инженерами футабы или хайтека должно оставаться последнее слово 😉?!
Вы действительно можете проделать такой “фокус” на своей футабе?
Я уверен, что сможет! Хотя сам (на своей футабе) это не проверял и не исследовал.
У “футабы” логика такая. Для них +120% триммера и +140% EPA - это нормально.
А вот 140% чего? Глубоко убежден, что именно стика. Если поставить расход на стике в 140% (такое там тоже возможно! Но не обязательно…), то отклоненный до упора (100% механики) стик как раз и приедет в 140% EPA.
Я же говорю - принципы построения алгоритма могут быть разными. На разной логике.
Эта логика не плохая и не хорошая. Она РАЗНАЯ.
Кому-то ближе и удобнее одна, кому-то другая.
И я не думаю, что нужно на первых полетах рулить этими расходами посредством EPA. Микроскопом гвозди забивать. Хотя, может, я чего-то в высказывании недопонял.
Скорее именно недопонял.
Я знаю три метода “уменьшения расходов для первых полетов” (да и не для первых тоже):
- Уменьшить расход;
- Переставить EPA;
- Поставить крепкую экспоненту в минус (-60…-70).
Каждый по своему удобен. Использовать надо то, что удобно и наиболее подходит.
Я против того, чтобы использовать EPA вместо того, чтобы переназначить расходы. Мне вот это очень не понравилось:
И функция двойных расходов в таком случае решается как изменение ЕРА в зависимости от какого-либо переключателя или даже крутилки.
Я против того, чтобы использовать EPA как штатный инструмент для оперирования расходами.
А эксперимент - можно. Я же предлагал. Но я не просто так попросил программу эксперимента. Я не вижу смысла крутить неизвестно что неизвестно зачем; крутить надо ради чего-то.
Ну покрутим, увидим как делает Футаба. Оно имеет смысл, только если кто-то еще возьмется проделать аналогичный эксперимент с Хитеком, или Санвой, или еще с кем. Чтобы сравнить и выбрать базу для нашего кодера.
А иначе… Да , “Футабы” вот так. Да и хрен с ней! А у нас вот эдак, совершенно по-другому, но всем нравится.
P.S. А в алгоритме, который я прописал в посте #2707, надобно сделать улучшение: считать, что двойной расход главного канала тоже может быть менее 100%. Тогда и для двойных расходов, и для одинарных надо считать коэффициент N/100 ; если расход = 100%, то коэффициент равен 1. И если расход меньше 100%, то при полностью упертом стике (и всех вмикшированных стиков тоже!) качалка не доедет до EPA. И это - правильно!
А вот идея менять расходы движением EPA мне кажется не хорошей.
Я несколько плохо выразился 😃 Имел ввиду именно так как Вы и поправили. Множить на ЕРА*Кдвойного расхода. Так и делал у себя в кодере.
Я уверен, что сможет! Хотя сам (на своей футабе) это не проверял и не исследовал.
Ну так, проверте 😉! Как активный участник обсуждения “проблемы”…
Я на своей проверял, но у меня такая футаба, что футабе за нее должно быть стыдно 😊… (4EX) Она так не сможет!
Эклипс тоже так не может…
А может, у меня интеллекта не хватает заставить их так поступить 😦? Хотя… может, и хватило бы, если бы я понимал, зачем такое может потребоваться в управлении моделями? Но пока я такого понимания не достиг… Увы! И по-прежнему пребываю в убеждении (или заблуждении ?), что “машинка не должна останавливаться пока стик не уперся!”
Я уверен, что сможет! Хотя сам (на своей футабе) это не проверял и не исследовал.
Ну так, проверте 😉! Как активный участник обсуждения “проблемы”…
Я на своей проверял, но у меня такая футаба, что футабе за нее должно быть стыдно 😊… (4EX) Она так не сможет!
Эклипс тоже так не может…
А может, у меня интеллекта не хватает заставить их так поступить 😦? Хотя… может, и хватило бы, если бы я понимал, зачем такое может потребоваться в управлении моделями? Но пока я такого понимания не достиг… Увы! И по-прежнему пребываю в убеждении (или заблуждении ?), что “машинка не должна останавливаться пока стик не уперся!”
…при полностью упертом стике (и всех вмикшированных стиков тоже!) качалка не доедет до EPA. И это - правильно!
Пока писал свой пост, Вы добавили…
Если вставить в Вашу фразу уточнение “… не доедет до EPA, но и не остановится, пока все стики не упрутся.” - то я соглашусь, что "И это - правильно!" 😁…
2serg111
Разбрался кажись.
Что-то не то… Ваши изменения -только неправильная адресация буфера, причем с выходом за его границы… Чревато…
2serg111 Что-то не то… Ваши изменения -только неправильная адресация буфера, причем с выходом за его границы… Чревато…
Та не. Там все правильно. У этого дисплея совсем другой буфер. По-более - 102x67 пикселей.
2serg111 И еще, если не устраивает контраст этого “паленого” дисплея, то поиграйтесь напряжением питания дисплея (даже просто резисторным делителем) ну и не забудьте поменять в инициализации значение VOP - контраст улучшится раза в 2-3
void LCD_init(void) // ИНИЦИАЛИЗАЦИЯ ДИСПЛЕЯ
{
LCD_DC =0;
LCD_RESET=0;
delay_ms(1);
LCD_RESET=1;
delay_ms(1);
LCD_DC=0;
spi(0x21); // включить питание, расшир. команды
spi(0xE4); // A large VOP for China displays
spi(0x45); // China LCD Correction (Y offset +5)
spi(0x06); // Temp. coefficient
spi(0x13); // bias=3
spi(0x20); // обычный набор инструкций
spi(0x0c); // Normal Mode
delay_us(500);
LCD_clear();
LCD_refresh();
Я на своей проверял, но у меня такая футаба, что футабе за нее должно быть стыдно 😊… (4EX) Она так не сможет!
да лааадно прибедняться-то! Расходов у нее нет, а EPA точно также, 0…+140 в каждую сторону.
Я попробую, конечно. Только не уверен что сегодня. Подготовиться надоть. Машинку закрепить, шкалу, стрелочку…
Кому чего интересно проверить/уточнить - пишите!
Если вставить в Вашу фразу уточнение “… не доедет до EPA, но и не остановится, пока все стики не упрутся.” - то я соглашусь, что "И это - правильно!" 😁…
Ы! 😁 А я изначально хотел возле этой добавки “2 Pav_13:” написать…
При таком (модифицированном) алгоритме фишка в том, что по отношению “расход главного канала”/100 считается ОБЩИЙ коэффициент. Допустим, расход = 80%; тогда общий коэффициент = 0,8. Дальше расход главного канала становится весом. Сумма весов относится к 100%. По весам считаются коэффициенты участия каналов. Да, все три (в наших примерах - три…) на полном отклонении дадут 100%, но эти 100% будут умножены на ОБЩИЙ коэффициент. И когда все три стика лягут на упоры, качалка дойдет только до 80% от EPA.
Не нравится, что всего 80? А зачем тогда ставили расход на 80%? Ставьте расход 100% - получите отклонение качалки 100% EPA.
Проверка, как в начальной школе: нету микширования. Никакого. Вообще. Расход 80%. До какого отклонения должна дойти качалка при полном отклонении стика? Тот, кто считает, что до 100% EPA, моментально получает двойку… Логично?..
Пример для осмысления: Условия точно как в “проверке”, но вы добавили 1% микширования от стика второго канала. Отклонили до упора первый стик. Потом до упора второй стик. До скольких процентов отклонилась качалка?
Подсказка: неужели до EPA? До 100% EPA? Как же это 1% от второго канала превратился в эквивалент 20% от первого?
Решение:
Расход главного канала = 80%
Микширование от второго кнаала = 1%
Общий коэффициент 80/100=0,8;
Сумма весов = 80+1
Весовой коэффициент главного канала =(80*100)/(80+1) = 98.76
Весовой коэффициент второго канала =(1*100)/(80+1) = 1.24.
Полное отклонение стика главного канала отклонят качалку на 98,76*0,8=79,008% от величины EPA,
Полное отклонение стика второго канала добавит 1,24*0,8=0,992% от величины EPA.
В сумме полное отклонение обоих стиков вызовет отклонение качалки 80% от величины EPA.
…А сколько хотел получить тот, кто установил расход 80%?