Добрый день!
Сделал большую матрицу на несколько окон из светодиодов WS2812B. Пока использую библиотеки от Adafruit (NeoMatrix), в дальнейшем можно будет перевести на любую более подходящую. Столкнулся с вопросом, для решением которого пока не нашел нормальных вариантов..
Светодиоды соединены следующим образом:
Стандартная змейка, с перемычками с окна на окно. Все работает как положено, однако из-за большого расстояния между окон (рама + диоды не у самого края) получается так, что при движении пикселей с одного окна на другое - изображение перескакивает сразу и визуально растягивается на ширину между пикселями окон, это вполне логично...
Первое решение - просто добавить еще 12 пикселей (2 ряда - синие на картинке) между окнами и спрятать их куда-то. После этого задекларировать матрицу как бОльшую по ширине и при переходе с окна на окно картинка будет "скрываться" за рамами - решение проблемы, однако весьма не рациональное..
Хотелось бы решить задачу программно. Однако это оказалось достаточно трудно - если пытаться эмулировать эти переходы - придется временно скрывать области, выводить необходимый битмап несколько раз в разных местах - в общем это то, что не хотелось бы делать каждый раз при создании анимации. Решение должно происходить где-то в декларации - к примеру обозначить номера диодов которые будут игнорироваться при формировании конечного пакета данных для ленты, но будут использоваться в обозначении размера ленты. Однако библиотеки не поддерживают возможность сдвигов кусков матриц или создание виртуальных пикселей в массиве..
Я пытаюсь добавить данную возможность в библиотеку NeoPixel, но возможно кто-то знает более простое решение вопроса или уже существующую библиотеку с поддержкой вот таких "слепых" зон?
Спасибо!
Сделал большую матрицу на несколько окон из светодиодов WS2812B. Пока использую библиотеки от Adafruit (NeoMatrix), в дальнейшем можно будет перевести на любую более подходящую. Столкнулся с вопросом, для решением которого пока не нашел нормальных вариантов..
Светодиоды соединены следующим образом:
Стандартная змейка, с перемычками с окна на окно. Все работает как положено, однако из-за большого расстояния между окон (рама + диоды не у самого края) получается так, что при движении пикселей с одного окна на другое - изображение перескакивает сразу и визуально растягивается на ширину между пикселями окон, это вполне логично...
Первое решение - просто добавить еще 12 пикселей (2 ряда - синие на картинке) между окнами и спрятать их куда-то. После этого задекларировать матрицу как бОльшую по ширине и при переходе с окна на окно картинка будет "скрываться" за рамами - решение проблемы, однако весьма не рациональное..
Хотелось бы решить задачу программно. Однако это оказалось достаточно трудно - если пытаться эмулировать эти переходы - придется временно скрывать области, выводить необходимый битмап несколько раз в разных местах - в общем это то, что не хотелось бы делать каждый раз при создании анимации. Решение должно происходить где-то в декларации - к примеру обозначить номера диодов которые будут игнорироваться при формировании конечного пакета данных для ленты, но будут использоваться в обозначении размера ленты. Однако библиотеки не поддерживают возможность сдвигов кусков матриц или создание виртуальных пикселей в массиве..
Я пытаюсь добавить данную возможность в библиотеку NeoPixel, но возможно кто-то знает более простое решение вопроса или уже существующую библиотеку с поддержкой вот таких "слепых" зон?
Спасибо!