Как можно сделать этот код поменьше?

Stas_Bro

✩✩✩✩✩✩✩
27 Апр 2020
25
0
Оформи код соответствующим тэгом
fill_solid(leds,NUM_LEDS, CRGB::Black);
leds[8] = CRGB::White;
leds[9] = CRGB::White;
leds[10] = CRGB::White;
leds[13] = CRGB::White;
leds[14] = CRGB::White;
leds[15] = CRGB::White;
leds[40] = CRGB::White;
leds[49] = CRGB::White;
leds[47] = CRGB::White;
leds[50] = CRGB::White;
leds[51] = CRGB::White;
leds[52] = CRGB::White;
leds[53] = CRGB::White;
leds[54] = CRGB::White;
FastLED.show();
 

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

★★★★★★★
14 Авг 2019
4,263
1,302
Москва
В каком смысле ? что бы был текст короче ? По размеру готового кода это будет иметь наверное минимальный размер.
 

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

★★★★★★★
14 Авг 2019
4,263
1,302
Москва
@Stas_Bro,
Можно, но зачем ? Все зависит от цели. И иногда "упрощение" в виде функций и доп. массивов приводит к увеличению затраченного объема памяти.
Что я вижу:
На ленте зажигаются некоторые светодиоды. Сколько таких вариантов будет ? Про массив правильно сказали, будет примерно так:
C++:
unit8_t leds_set1[]={8,9,10,13,14,15,40,49,47,50,51,52,53,54};
...
fill_solid(leds,NUM_LEDS, CRGB::Black); 
for (int i=0;i<sizeof(leds_set1);i++)
   eds[leds_set1[i]] = CRGB::White;
FastLED.show(); 
...
 

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

★★★★★★★
14 Авг 2019
4,263
1,302
Москва
Вот таких переменных:
unit8_t leds_set1[]={8,9,10,13,14,15,40,49,47,50,51,52,53,54};

сделать 3 штуки. Под каждые нужды

а функция будет примертно такая:
C++:
void setToLED(uint8_t a_set[])
{
fill_solid(leds,NUM_LEDS, CRGB::Black);
for (int i=0;i<sizeof(a_set);i++)
   eds[a_set[i]] = CRGB::White;
FastLED.show();
}
И далее в коде
setToLED(leds_set1);

Где то могут быть опечатки, не тестировал, но принцип такой.
А если количество включаемых светодиодов всегда одно и то же, то можно даже все в один двумерный массив сделать и передавать только номер строки.
 
  • Лойс +1
Реакции: Stas_Bro