полностью переделал
управление яркостью
шкала яркости теперь масштабируемая, по-умолчанию изменяется в пределах 0-20. Кому неудобно, можно поменять в "настройки" - "дополнительные" и выставить любое значение вплоть до 255 для особо упортых. Если выставить 100, получатся проценты. Думаю по-умолчанию и 0-10 хватило бы, но ладно, посмотрим.
Дополнительно управление яркостью корректируется с помощью кривых, кривые нужны что бы скорректировать нелинейность восприятия глазом света от светодиодов и разнобоя в интенсивности светопотока от разных эффектов.
По-умолчанию все эффекты используют кривую
cie1931, как наиболее приближенную к "линейной" для использования со светодиодами.
Смысл кривой в том что половина шкалы примерно соответсвует "половине" яркости по ощущениям глаза человека.
Остальные кривые можно использовать для каждого эффекта отдельно и корректировать тусклые или слишком яркие эффекты что бы выровнять яркость примерно во всем диапазоне шкалы.
exponent - экспонента самая медленно нарастающая кривая, хорошо подходит для эффектов "вырви глаз"
cie1931 - по-умолчанию, наиболее равномерная по восприятию
sine - синус, нарастает медленне чем линейная по краям шкалы, но похожа на линейную в середине
linear - без какой либо коррекции, по сути это управление скважностью ШИМ светодиодов
square - квадратичная, нарастает медленее чем линейная, догоняет линейную к концу шкалы
синус,
линейная и
квадрат кривые, кажутся "ярче
" чем по-умолчанию 1931. Далее надо подбирать под каждый эффект по вкусу. Сравнивать кривые лучше по 3м точкам - примерно на четверти, половине и 3/4 шкалы. Сравнивать только посерёдке смысла нет.
В целом я потыкал, если не упарываться до одури, то вполне норм влепить экспоненту на яркие эффекты, типа "метасферы" и квадрат или синус на убогие типа "акварель" или "бегающий кубик".
Периферию типа кнопок и энкодеров пока не тестировал, навреное там что-то сломалось из-за уменьшеной размерности шкалы, надо проверять.
P.S. То что некторые кривые будут в начале шкалы на малых значениях (1-2) гасить матрицу - это нормально ибо выходит за пределы динамического диапазона 8 битной матрицы. Хотите блеклые и потерянные цвета на очень малой яркости - ставьте шкалу на 255 и линейную кривую.
P.P.S. Для
@andy040670 - сейчас "индивидуальной" яркости для каждого эффекта нет, но, в принципе в тукущую архитектуру ее вписать можно. Но будет несколько "но", на эти настройки не будет действовать масштабирование шкалы и кривые (что логичино, ибо нафиг тогда этот ручной контрол нужен). Другой вопрос что в текущей реализации я вот совсем не понимаю зачем этот рудимент таки нужен, кроме как потому что оно у вас просто есть и всё. Процесс ломать не охота.
Давайте так, у вас лампа все равно на 8266 сейчас и текущий проект, я так понимаю, вам ни к чему? Когда соберете лампу на есп32 - посидите и пощупайте новую реализацию, вдумчиво. Если прям вот совсем не зайдет и кровь из носу захотите сохранять значение для каждого эффекта, скажите мне, я сделаю. А пока посмотрим как оно будет жить.