Как перебирать предустановленные цвета энкодером

Alexey_09

✩✩✩✩✩✩✩
26 Фев 2021
14
0
Добрый день!

Мне нужно регулировать цветовую температуру на адресной светодиодной ленте. Использую библиотеку fastLED, там есть 19 предустановленных цветовых температур. Не могу понять каким образом мне сделать так, чтобы при повороте энкодера у меня перебирались бы все эти предустановленные температуры?

Устанавливаю цвет через: FastLED.setTemperature (Halogen); - в скобках указывается предустановленный цвет.

Как сделать чтобы цвета менялись? Может через переменную, значение которой будет приравниваться к любому из предустановленных цветов?
Например:
#define int8_t kelvin;
FastLED.setTemperature (kelvin(1));
if (enc.isRight()) kelvin1++;

А до этого в скетче записать, что, например kelvin1 = Halogen; kelvin2 = candle; kelvin3 = fluorescent и т.д.? Только вот как заставить переключаться с kelvin1 на kelvin2 и т.д.?
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,185
1,280
Москва
Ну перебрать их напрямую не выйдет. Это просто список именованный. Но можно добавить их в массив, можно даже не все, а только нужеые и уже спокойно перебирать индекс массива в нужную сторону:
C++:
#include <FastLED.h>

ColorTemperature CTAR[]={Candle,Tungsten40W,Tungsten100W};

void setup() {
  Serial.begin(115200);
  for (int i=0;i<sizeof(CTAR)/sizeof(ColorTemperature);i++)
  Serial.println(CTAR[i],HEX);
}


void loop() {
}
 

Alexey_09

✩✩✩✩✩✩✩
26 Фев 2021
14
0
И они будут перебираться в том порядке, в каком перечислены через запятую в фигурных скобках (внутри массива)?
И строка будет выглядеть так: FastLED.setTemperature (CTAR); ?