Быстродействующий массив fill_solid

arduino-uno rgb-led led-strip

У меня возникли проблемы с функцией fill_solid с массивами. можете ли вы помочь придать цвет строке 3.

int row3[]={1,2,3};
uint8_t sizerow3 = sizeof(row3)/sizeof(row3[0]);

void solid(){
  fill_solid(leds[row3[3]], sizerow3, CRGB :: Red);
  LEDS. show();
}

Это моя полная программа.

Спасибо

, 👍0

Обсуждение

В чем проблема с вашим кодом? Пожалуйста, добавьте подробное описание проблемы, @chrisl

мне нужна помощь, как последовательно включать светодиоды от row1[] до row5 []. (для каждой строки, а не для каждого пикселя), @Ecvary


1 ответ


1

светодиоды[row3[3]] - это не то, что вы думаете. То есть выбирается один единственный светодиод в зависимости от того, что находится в элементе 4 (индекс 3) 3-элементного массива row3. Поскольку в массиве из 3 элементов нет индекса 3 (только индексы 0, 1 и 2), значение, которое он возвращает для использования в качестве индекса массива leds[], неизвестно.

fill_solid предназначен для заполнения одной непрерывной цепочки светодиодов, начинающейся со светодиода n и продолжающейся для нескольких светодиодов после этого. Чтобы настроить все случайные светодиоды на один и тот же цвет, вы должны просто просмотреть список целевых светодиодов и настроить цвета по отдельности. Что-то вроде:

for (int i = 0; i < sizerow3; i++) {
    leds[row3[i]] = CRGB::Red;
}
LEDS.show();
,