Closed Melkiyby closed 1 year ago
Мне не известен способ как это сделать и я не вижу простого решения. Есть вроде какая-то возможность разделять вывод на ленту через подключение к разным пинам контроллера и для каждого пина указать свои настройки. Но это действительно нужно глубокое погружение в FastLED и я с этим не сталкивался и ничего конкретного по этому поводу сказать не могу.
Ну, мои эксперименты показали, что это возможно. Вывод на части ленты разделяется на разные пины, каждый пин инициализируется со своей цветовой последовательностью. Должно работать.
Ну про вывод через разные пины это понятно, сейчас ковыряю fastled на возможность внесения коррекции в сам массив что бы еще один провод не тянуть. По результатам отпишусь
Проще всего, видимо, найти процедуру FastLedShow() и в указанное место
вставить небольшой цикл, который пробегает по участку матрицы, которая "не того цвета" и меняет для каждого пикселя цвета с RGB на GRB или как там оно у вас...
Всё верно, в это место нужно вставить Осталось проверить на подтормаживание
Был выявлен косяк с морганием изменённого участка(синий с красным чередовались) в режиме рисования, игр, загрузки картинок и на некоторых эффектах. Вот фикс
Может быть после FastLED.show() нужно просто обратно вернуть как было? Видимо часть эффектов для построения следующего кадра берет данные из этого массива, а он уже изменен... Отсюда и артефакты.
Тогда да, нужно создать массив нужного размера, скопировать в него через memcpy() текущее содержимое leds с нужной позиции, после отправки на матрицу show() через memcpy() вернуть обратно...
Копирование памяти memcpy() работает быстро
Я согласен что мой метод не самый быстрый. Завтра попробую с memcpy() если конечно мозга хватит.
В проекте есть несколько мест, где используется memcpy(), посмотрите там. Почитайте в инете про функцию с примерами. Ничего сложного - указывается куда копировать (приемник), откуда копировать (источник) и сколько копировать (в байтах). Помним, что цвета в массиве - эта структура RGB, то есть один цвет - 3 байта. Вроде бы так.
Хотя, если ваш метод работает и все устраивает - нет задержек - к чёрту перфекционизм.
Привет. Собрал матрицу 48х14(6х14 на окно) и так совпало что одна лента оказалась отличной по цветовой последовательности. Есть ли возможность для этого участка указать нужную последовательность или нужно глубокое погружение в библиотеку FastLed?