#include <FastLED.h>

#define LED_PIN     5
#define NUM_LEDS    50
#define BRIGHTNESS  64
#define LED_TYPE    WS2811
#define COLOR_ORDER GRB
CRGB leds[NUM_LEDS];

// Fail counters
#define FailHomeStartLED      0     // First LED for the Home fail counter
#define FailGuestsStartLED    10    // First LED for the Guests fail counter

#define FailHomeLeftToRight   true  // Home: true = from left to right, false = from right to left
#define FailGuestsLeftToRight true  // Guests: true = from left to right, false = from right to left

#define FailLEDsPerDot        2     // Number of LEDs in a fail dot
#define FailDotCount          5     // Number of fails/dots for Home or Guests

// Fail dot colors
CRGB FailColors[FailDotCount] = { CRGB(255,255,0), CRGB(255,200,0),  CRGB(255,150,0),  CRGB(255,100,0),  CRGB(255,0,0) };

// or use CRGB names;
// CRGB FailColors[FailDotCount] = { CRGB::Yellow, CRGB::Yellow, CRGB::Yellow, CRGB::Orange, CRGB::Red };

void setup() {
    FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
    FastLED.setBrightness(  BRIGHTNESS );      // Set overall brightness
    FastLED.clear(true);                       // clear LEDs and Show
}


void loop()
{
   SetFail(1,4);
}

void SetFail(int FailCountHome, int FailCountGuests) {
  int Direction;

  FailHomeLeftToRight ? Direction = 1 : Direction = -1;
  
  for(int FailCounter=0; FailCounter<FailCountHome; FailCounter++) {
    for(int LEDsInDot=0; LEDsInDot<FailLEDsPerDot; LEDsInDot++) {
      leds[FailHomeStartLED + Direction*((FailCounter*FailLEDsPerDot) + LEDsInDot)] = FailColors[FailCounter];
    }
  }
  
  FailGuestsLeftToRight ? Direction = 1 : Direction = -1;
  
  for(int FailCounter=0; FailCounter<FailCountGuests; FailCounter++) {
    for(int LEDsInDot=0; LEDsInDot<FailLEDsPerDot; LEDsInDot++) {
      leds[FailGuestsStartLED + Direction*((FailCounter*FailLEDsPerDot) + LEDsInDot)] = FailColors[FailCounter];
    }
  }

  FastLED.show(); 
}