LED's changing progressively instead of all at once

Is there a way I can make all of the LED's change at once instead of one at a time while using cases?

#include "FastLED.h"

#define NUM_LEDS 120
#define LED_PIN 2
#define COLOR_ORDER GRB
#define LED_TYPE WS2811
#define LED_BRIGHTNESS 50

CRGB leds[NUM_LEDS];


void setup() {
  Serial.begin(9600);
  FastLED.addLeds <WS2811, LED_PIN, COLOR_ORDER> (leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
}

void loop() {

  int count = 0;

  for (int count = 0; count <= 141; count++)
  {
    Serial.println(count);
    delay(1000);

    for (int i = 0; i < NUM_LEDS; i++) {

      switch (count) {


        case  0: leds[i] = CRGB::AliceBlue;  break;
        case  1 : leds[i] = CRGB::Amethyst;  break;
        case  2 : leds[i] = CRGB::AntiqueWhite;  break;
        case  3 : leds[i] = CRGB::Aqua;  break;
        case  4 : leds[i] = CRGB::Aquamarine;  break;
        case  5 : leds[i] = CRGB::Azure ;  break;
        case  6 : leds[i] = CRGB::Beige ;  break;
        case  7 : leds[i] = CRGB::Bisque;  break;
        case  8: leds[i] = CRGB::Black ;  break;
        case  9 : leds[i] = CRGB::BlanchedAlmond;  break;
        case  10 : leds[i] = CRGB::Blue;  break;
        case  11 : leds[i] = CRGB::BlueViolet;  break;
        case  12 : leds[i] = CRGB::Brown ;  break;
        case  13 : leds[i] = CRGB::BurlyWood ;  break;
        case  14 : leds[i] = CRGB::CadetBlue ;  break;
        case  15 : leds[i] = CRGB::Chartreuse;  break;
        case  16 : leds[i] = CRGB::Chocolate ;  break;
        case  17 : leds[i] = CRGB::Coral ;  break;
        case  18 : leds[i] = CRGB::CornflowerBlue;  break;
        case  19 : leds[i] = CRGB::Cornsilk;  break;
        case  20 : leds[i] = CRGB::Crimson ;  break;
        case  21 : leds[i] = CRGB::Cyan;  break;
        case  22 : leds[i] = CRGB::DarkBlue;  break;
        case  23 : leds[i] = CRGB::DarkCyan;  break;
        case  24 : leds[i] = CRGB::DarkGoldenrod ;  break;
        case  25 : leds[i] = CRGB::DarkGray;  break;
        case  26 : leds[i] = CRGB::DarkGreen ;  break;
        case  27 : leds[i] = CRGB::DarkKhaki ;  break;
        case  28 : leds[i] = CRGB::DarkMagenta ;  break;
        case  29 : leds[i] = CRGB::DarkOliveGreen;  break;
        case  30 : leds[i] = CRGB::DarkOrange;  break;
        case  31 : leds[i] = CRGB::DarkOrchid;  break;
        case  32 : leds[i] = CRGB::DarkRed ;  break;
        case  33 : leds[i] = CRGB::DarkSalmon;  break;
        case  34 : leds[i] = CRGB::DarkSeaGreen;  break;
        case  35 : leds[i] = CRGB::DarkSlateBlue ;  break;
        case  36 : leds[i] = CRGB::DarkSlateGray ;  break;
        case  37 : leds[i] = CRGB::DarkTurquoise ;  break;
        case  38 : leds[i] = CRGB::DarkViolet;  break;
        case  39 : leds[i] = CRGB::DeepPink;  break;
        case  40 : leds[i] = CRGB::DeepSkyBlue ;  break;
        case  41 : leds[i] = CRGB::DimGray ;  break;
        case  42 : leds[i] = CRGB::DodgerBlue;  break;
        case  43 : leds[i] = CRGB::FireBrick ;  break;
        case  44 : leds[i] = CRGB::FloralWhite ;  break;
        case  45 : leds[i] = CRGB::ForestGreen ;  break;
        case  46 : leds[i] = CRGB::Fuchsia ;  break;
        case  47 : leds[i] = CRGB::Gainsboro ;  break;
        case  48 : leds[i] = CRGB::GhostWhite;  break;
        case  49 : leds[i] = CRGB::Gold;  break;
        case  50 : leds[i] = CRGB::Goldenrod ;  break;
        case  51 : leds[i] = CRGB::Gray;  break;
        case  52 : leds[i] = CRGB::Green ;  break;
        case  53 : leds[i] = CRGB::GreenYellow ;  break;
        case  54 : leds[i] = CRGB::Honeydew;  break;
        case  55 : leds[i] = CRGB::HotPink ;  break;
        case  56 : leds[i] = CRGB::IndianRed ;  break;
        case  57 : leds[i] = CRGB::Indigo;  break;
        case  58 : leds[i] = CRGB::Ivory ;  break;
        case  59 : leds[i] = CRGB::Khaki ;  break;
        case  60 : leds[i] = CRGB::Lavender;  break;
        case  61 : leds[i] = CRGB::LavenderBlush ;  break;
        case  62 : leds[i] = CRGB::LawnGreen ;  break;
        case  63 : leds[i] = CRGB::LemonChiffon;  break;
        case  64 : leds[i] = CRGB::LightBlue ;  break;
        case  65 : leds[i] = CRGB::LightCoral;  break;
        case  66 : leds[i] = CRGB::LightCyan ;  break;
        case  67 : leds[i] = CRGB::LightGoldenrodYellow;  break;
        case  68 : leds[i] = CRGB::LightGreen;  break;
        case  69 : leds[i] = CRGB::LightGrey ;  break;
        case  70 : leds[i] = CRGB::LightPink ;  break;
        case  71 : leds[i] = CRGB::LightSalmon ;  break;
        case  72 : leds[i] = CRGB::LightSeaGreen ;  break;
        case  73 : leds[i] = CRGB::LightSkyBlue;  break;
        case  74 : leds[i] = CRGB::LightSlateGray;  break;
        case  75 : leds[i] = CRGB::LightSteelBlue;  break;
        case  76 : leds[i] = CRGB::LightYellow ;  break;
        case  77 : leds[i] = CRGB::Lime;  break;
        case  78 : leds[i] = CRGB::LimeGreen ;  break;
        case  79 : leds[i] = CRGB::Linen ;  break;
        case  80 : leds[i] = CRGB::Magenta ;  break;
        case  81 : leds[i] = CRGB::Maroon;  break;
        case  82 : leds[i] = CRGB::MediumAquamarine;  break;
        case  83 : leds[i] = CRGB::MediumBlue;  break;
        case  84 : leds[i] = CRGB::MediumOrchid;  break;
        case  85 : leds[i] = CRGB::MediumPurple;  break;
        case  86 : leds[i] = CRGB::MediumSeaGreen;  break;
        case  87 : leds[i] = CRGB::MediumSlateBlue ;  break;
        case  88 : leds[i] = CRGB::MediumSpringGreen ;  break;
        case  89 : leds[i] = CRGB::MediumTurquoise ;  break;
        case  90 : leds[i] = CRGB::MediumVioletRed ;  break;
        case  91 : leds[i] = CRGB::MidnightBlue;  break;
        case  92 : leds[i] = CRGB::MintCream ;  break;
        case  93 : leds[i] = CRGB::MistyRose ;  break;
        case  94 : leds[i] = CRGB::Moccasin;  break;
        case  95 : leds[i] = CRGB::NavajoWhite ;  break;
        case  96 : leds[i] = CRGB::Navy;  break;
        case  97 : leds[i] = CRGB::OldLace ;  break;
        case  98 : leds[i] = CRGB::Olive ;  break;
        case  99 : leds[i] = CRGB::OliveDrab ;  break;
        case  100: leds[i] = CRGB::Orange;  break;
        case  101: leds[i] = CRGB::OrangeRed ;  break;
        case  102: leds[i] = CRGB::Orchid;  break;
        case  103: leds[i] = CRGB::PaleGoldenrod ;  break;
        case  104: leds[i] = CRGB::PaleGreen ;  break;
        case  105: leds[i] = CRGB::PaleTurquoise ;  break;
        case  106: leds[i] = CRGB::PaleVioletRed ;  break;
        case  107: leds[i] = CRGB::PapayaWhip;  break;
        case  108: leds[i] = CRGB::PeachPuff ;  break;
        case  109: leds[i] = CRGB::Peru;  break;
        case  110: leds[i] = CRGB::Pink;  break;
        case  111: leds[i] = CRGB::Plaid ;  break;
        case  112: leds[i] = CRGB::Plum;  break;
        case  113: leds[i] = CRGB::PowderBlue;  break;
        case  114: leds[i] = CRGB::Purple;  break;
        case  115: leds[i] = CRGB::Red ;  break;
        case  116: leds[i] = CRGB::RosyBrown ;  break;
        case  117: leds[i] = CRGB::RoyalBlue ;  break;
        case  118: leds[i] = CRGB::SaddleBrown ;  break;
        case  119: leds[i] = CRGB::Salmon;  break;
        case  120: leds[i] = CRGB::SandyBrown;  break;
        case  121: leds[i] = CRGB::SeaGreen;  break;
        case  122: leds[i] = CRGB::Seashell;  break;
        case  123: leds[i] = CRGB::Sienna;  break;
        case  124: leds[i] = CRGB::Silver;  break;
        case  125: leds[i] = CRGB::SkyBlue ;  break;
        case  126: leds[i] = CRGB::SlateBlue ;  break;
        case  127: leds[i] = CRGB::SlateGray ;  break;
        case  128: leds[i] = CRGB::Snow;  break;
        case  129: leds[i] = CRGB::SpringGreen ;  break;
        case  130: leds[i] = CRGB::SteelBlue ;  break;
        case  131: leds[i] = CRGB::Tan ;  break;
        case  132: leds[i] = CRGB::Teal;  break;
        case  133: leds[i] = CRGB::Thistle ;  break;
        case  134: leds[i] = CRGB::Tomato;  break;
        case  135: leds[i] = CRGB::Turquoise ;  break;
        case  136: leds[i] = CRGB::Violet;  break;
        case  137: leds[i] = CRGB::Wheat ;  break;
        case  138: leds[i] = CRGB::White ;  break;
        case  139: leds[i] = CRGB::WhiteSmoke;  break;
        case  140: leds[i] = CRGB::Yellow;  break;
        case  141: leds[i] = CRGB::YellowGreen;  break;

      }
      FastLED.show();

      delay(10);        // delay in between reads for stability
    }

  }

}

I suggest using something like this

const CRGB colors[] =
{
  CRGB::AliceBlue,
  CRGB::Amethyst,
  ...
};

...

CRGB color = colors[ count ];

for (int i = 0; i < NUM_LEDS; i++)
{
  leds[i] = color;
}

FastLED.show();

delay(10);        // delay in between reads for stability

Your problem is that you called FastLED.show() everytime you change one LED. By putting it outside the for loop, it will be called only once when all LEDs are changed.

Edit: I had modified my post earlier but the modifications didn't show.. It said something about "Edit conflict, post is edited by another user" - forum bug ?

1 Like

Throw out the delay(10).

As well as the delay(1000) at the start of the first for-loop...

What's the purpose of the case/switch in your program? It doesn't seem to add any relevant functionality on top of the first for-loop, does it?

The case is used to select the assigned colour to the current count condition.

ie if the count is 50 it will select Goldenrod.

This isn't the full code is I've written rather than just a section showing the functionality I was having a problem with. I hesitate to post the full code because it's a jumbled mess.

I understand, but since you seem to be unconditionally looping through each count anyway, in the snippet you posted the switch/case doesn't do anything useful. Does the full code indeed selectively set the 'count' instead of going through each possible value with a for-loop?

Yes, the count is controlled by a button press, every time the button is pressed the count increases.

Ok, then you'd still want to get rid of that delay(1000). But perhaps it was there for testing purposes only...?

Yes, it was only for testing.

You don't need the switch, use an array like in my example, it will be more efficient (speed and memory usage), for the same result

Like he explained, he wants to selectively turn on colors based on user input.
Your method of a for-loop with an array would of course still work, with an if-statement added to it.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.