#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();
}