// https://www.reddit.com/r/FastLED/comments/14u7t7i/led_trasition_gets_skipped_overflow/
#include <FastLED.h>
#define LED_PIN 2
#define NUM_LEDS 64
CRGB leds[NUM_LEDS];
//array
unsigned long int x[NUM_LEDS];
unsigned long int y[NUM_LEDS];
//palett
DEFINE_GRADIENT_PALETTE(indigoGP) {
0, 0, 0, 0,
100, 0, 0, 5,
255, 1, 27, 247
};
// CRGBPalette16 indigoPalett = indigoGP;
CRGBPalette16 indigoPalett = RainbowColors_p;
void setup() {
Serial.begin(2000000);
FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS);
for (unsigned short i = 0; i < NUM_LEDS; i++) {
unsigned char angle = (i * 256) / NUM_LEDS;
x[i] = cos8(angle);
y[i] = sin8(angle);
}
}
void loop() {
effect();
FastLED.show();
}
//effect function (gets called in loop)
void effect() {
uint8_t scale = 150;
uint16_t shift_x = millis() / 40;
uint16_t shift_y = millis() / 40;
shift_x += 120 * 1000 / 40;
shift_y += 120 * 1000 / 40;
for (uint16_t i = 0; i < NUM_LEDS; i++) {
uint32_t real_x = (x[i] + shift_x) * scale;
uint32_t real_y = (y[i] + shift_y) * scale;
if (!i) {
Serial.print(shift_x);
Serial.print(", ");
Serial.print(shift_y);
Serial.print(", ");
Serial.print(real_x);
Serial.print(", ");
Serial.println(real_y);
}
uint8_t noise = inoise16(real_x, real_y, 4223) >> 8;
uint8_t index = noise * 3;
leds[i] = ColorFromPalette(indigoPalett, index);
}
}