Как правильно работать с этим массивом?
Я использую светодиодную ленту WS2812b, ESP8266 (NodeMCU 1.0) и датчик жестов APDS9960. Я хочу, чтобы при движении руки слева направо и справа налево менялись цвета полоски светодиодов, предварительно сохраненные в массиве строк:< /п>
const char * colors [11] = {"CRGB :: White",
"CRGB :: WhiteSmoke",
"CRGB :: CadetBlue",
"CRGB :: SteelBlue",
"CRGB :: Teal",
"CRGB :: SlateGray" ,
"CRGB :: MediumPurple",
"CRGB :: Purple",
"CRGB :: PapayaWhip",
"CRGB :: LightPink",
"CRGB :: Crimson"};
Но когда я собираюсь включить цвета с помощью функций библиотеки FastLed таким образом:
for (int i = 0; i <NUM_LEDS; i = i + 1) {
leds [i] = colors [2];
FastLED.show ();
delay (10);}
Все, что я получаю, это эта ошибка:
недопустимое преобразование из 'const char *' в 'uint32_t {он же беззнаковый int}' [-fpermissive]
Думаю, проблема во мне во мне при объявлении массива. Может ли кто-нибудь мне помочь?
@k.Cyborg, 👍1
1 ответ
Лучший ответ:
Вам не нужен массив строк, содержащий (плохо отформатированные) имена переменных. Вместо этого вам нужен массив 32-битных целых чисел, содержащий значения, содержащиеся в этих переменных.
const uint32_t colors[] = {
CRGB::White,
CRGB::WhiteSmoke,
CRGB::CadetBlue,
CRGB::SteelBlue,
CRGB::Teal,
CRGB::SlateGray,
CRGB::MediumPurple,
CRGB::Purple,
CRGB::PapayaWhip,
CRGB::LightPink,
CRGB::Crimson
};
Поскольку цвета — это просто числа, в (шестнадцатеричной) форме 0xRRGGBB
вы просто сохраняете их как 32-битные целые числа без знака. Имена, которые у вас есть, представляют собой именно такие (постоянные) переменные, используемые для удобства использования (CRGB::White
— это 0xFFFFFF
).
- Инициализация объекта как члена класса приводит к ошибке связывания?
- Как объявить массив переменного размера (глобально)
- Как получить тип данных переменной?
- Ошибка: expected unqualified-id before 'if'
- Преобразование long в массив символов и обратно
- Ошибка компиляции кода для Arduino/Genuino Uno
- Ошибка : заблудиться '\' в программе
- Ошибка: invalid application of 'sizeof' to incomplete type 'int []' при попытке вычислить размер массива в библиотеке
Спасибо!!! Ваша рекомендация сработала правильно!!! Еще раз спасибо!!!, @k.Cyborg