Impossible? Adding blinking to a WS2811 which is already using delays

Grumpy_Mike:
Ok this was a more interesting fault that I could initially tell from the code. The problem was not only with the sequence in which you did things but also with the toggle variable. The times when you thought the LEDs were not blinking they actually were. I could tell that because I put a print statement in the bit that flickered the LEDs and it printed that they were in that toggling routine. The problem was that although that routine was running, because of the state of the toggle variable when the start variable was changed the LEDs were being toggled to the same value as they already were on. This happened when the start variable was odd not even. When it was even it was working fine.

So the solution was to give each LED its own toggle value, that is put it in an array. The lastMillis was not needed so it was removed. However I thought a much better effect was generated when the LEDs toggled at a random rate so I added the
if (random(100)>50)
instead of the fixed toggle, this removed the need for the toggle variable all together.
Note if you are controlling three LEDs at a time, like most WS2811 strips the number of LEDs needs to be reduced to one third of the number. In this case that variable should be the number of controllers, not LEDs.

#include <FastLED.h>

#define NUM_LEDS 250
#define DATA_PIN 6
#define BRIGHTNESS 10
#define COLOR_ORDER RGB
CRGB leds[NUM_LEDS];

int color;

int flicker1[] = {2, 5, 8, 11, 14, 17, 20};

unsigned long startTime = millis();
unsigned long interval = 6000;
unsigned long int lastMillis;
uint8_t start_num = 0;
bool toggle[7];

void setup() {
// delay(2000); // crap not needed
  //FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
  FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
}

void loop() {
  if (millis() - lastMillis > 50) { // filcker remaining LEDs
    for (int i = start_num; i < 7; i++) {
      if (random(100)>50) // a better effect?
      //if(toggle[i])
      {
        //show colorA
        leds[flicker1[i]] = CRGB(255, 50, 0); 
      }
      else
      {
        leds[flicker1[i]] = CRGB(90, 23, 0);
      }
      toggle[i] = !toggle[i]; // not needed if keeping the random flicker   
    }
      lastMillis = millis(); // for next flicker     
      FastLED.show();
  } // end of flicker all remaining LEDs

if (start_num < 7 && (millis() - startTime >= interval)) { // turn one LED off
    leds[flicker1[start_num]] = CRGB(0, 0, 0);
    startTime = millis();
    FastLED.show();
    start_num++;
    if(start_num >= 7) start_num = 0; // start sequence over
  }
}

You're an absolute genius! I thought it was something with the toggle because of the way they would blink and freeze at the same timing of the toggle. But I don't think I ever would have come up with the solution you did on my own. And I love the random effect, it feels more real. I had planned on something like that but was so stuck on the other thing I couldn't even imagine taking that next step. Thank you so much for all your help and patience with a nooby, I really do appreciate it!