#include <FastLED.h>
#define NUM_LEDS 12
#define DATA_PIN 1
CRGB leds[NUM_LEDS];
byte ringPosition = 0; // Array position of LED that will be lit
#define ringSpeed 100
#define BRIGHTNESS 80
int zdk = 100;
int zdl = 200;
int startring[] = {9, 10, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
void setup() {
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);
// digitalWrite(4, LOW);
}
void fastring() {
ringPosition = 0;
for (int i = 0; i < NUM_LEDS; i++) {
CRGB lastcolor = leds[ringPosition];
leds[ringPosition] = CRGB::CRGB::Yellow;
FastLED.show();
delay(zdk);
leds[ringPosition] = lastcolor;
FastLED.show();
ringPosition++;
}
}
void slowring() {
ringPosition = 0;
for (int i = 0; i < NUM_LEDS; i++) {
CRGB lastcolor = leds[ringPosition];
leds[ringPosition] = CRGB::CRGB::Yellow;
FastLED.show();
delay(zdl);
leds[ringPosition] = lastcolor;
FastLED.show();
ringPosition++;
}
}
void loop() {
// First LED-Ring before Routine
for (int i = 0; i < NUM_LEDS; i++) {
leds[ringPosition] = CRGB::Red;
FastLED.show();
delay(ringSpeed);
leds[ringPosition] = CRGB::Black;
FastLED.show();
ringPosition++;
}
for (int a = 0; a < 11; a += 2) {
if (a != 2 && a != 8) {
fill_solid(leds + startring[0 + a], 1, CRGB::Red);
fill_solid(leds + startring[1 + a], 1, CRGB::Red);
fill_solid(leds + startring[2 + a], 1, CRGB::Red);
fastring();
}
fill_solid(leds + startring[0 + a], 1, CRGB::Blue);
fill_solid(leds + startring[1 + a], 1, CRGB::Blue);
fill_solid(leds + startring[2 + a], 1, CRGB::Blue);
if (a != 2 && a != 8) {
fastring();
} else {
slowring();
}
fill_solid(leds + startring[0 + a], 1, CRGB::Green);
fill_solid(leds + startring[1 + a], 1, CRGB::Green);
fill_solid(leds + startring[2 + a], 1, CRGB::Green);
if (a != 2 && a != 8) {
fastring();
} else {
slowring();
}
FastLED.show();
delay(2000);
fill_solid(leds, NUM_LEDS, 0);
FastLED.show();
}
}