Преобразование идентификаторов WS2812-LED-Strip-ID при разрезании полосы на несколько параллельных

Допустим, у меня есть 1 метр ленты WS2812 с 60 светодиодами на метр. Теперь я разрезал полосу на 6 отдельных полос, но сохранил проводку такой же и расположил их параллельно. Это будет выглядеть примерно так

1 | 11 | 21 ...

2 | 12 | 22 ...

3 | 13 | 23 ...

...

10 | 20 | 30 ...

Есть ли какая-нибудь библиотека, которая позволила бы мне легко перевести это? Если я, например, хочу работать со строками, покрасить определенную строку в определенный цвет, обработать определенные подполосы, как если бы они были отдельными, и т. д. и т. д. Я уверен, что не могу быть первым, у кого возникла эта проблема?

, 👍0


1 ответ


1

Нет, библиотеки нет.

Это простая математика.

Если все ваши полосы одинаковые, то вы просто умножаете номер полосы на количество светодиодов в каждой ленте и добавляете количество светодиодов, которые вы хотите в этой ленте.

Итак, предположим, что на полосе 10 светодиодов:

lednumber = 10 * strip + led;

Вы можете сделать небольшой макрос, который сделает это за вас, если хотите:

#define STRIP2LED(S, L) (((S) * 10) + (L))

Тогда вы можете использовать такие вещи, как:

// Установить все светодиоды на полосе 3 в красный цвет
for (uint8_t i = 0; i< 10; i++) {
    leds[STRIP2LED(3, i)] = CRGB::Red;
}
,