#include "FastLED.h"
#define DATA_PIN 3
#define BRIGHTNESS 255
#define NUM_LEDS 125
CRGB leds[NUM_LEDS];
CRGB ring[NUM_LEDS];
uint8_t pos;
uint8_t hue;
CHSV ringColor = CHSV(hue+128,120,255);
void setup() {
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);
Serial.begin(115200);
}
void loop() {
EVERY_N_MILLISECONDS(120) {
hue++;
ringColor = CHSV(hue+128,150,255);
}
fadeToBlackBy(leds, NUM_LEDS, 2);
leds[pos] = CHSV(hue, 220, 255);
uint8_t ringStart = beatsin8(8,14,70);
fill_gradient(ring, ringStart, CHSV(0,0,0) , ringStart+21, ringColor, SHORTEST_HUES);
fill_solid(ring+(ringStart+22), 8, ringColor );
fill_gradient(ring, ringStart+30, ringColor , ringStart+51, CHSV(0,0,0), SHORTEST_HUES);
for (uint8_t i = 0; i < NUM_LEDS; i++) {
leds[i].r = max(ring[i].r, leds[i].r);
leds[i].g = max(ring[i].g, leds[i].g);
leds[i].b = max(ring[i].b, leds[i].b);
}
EVERY_N_MILLISECONDS(15) {
pos = pos + 1;
if (pos == NUM_LEDS) {
pos = 0;
}
}
FastLED.show();
}