#include <FastLED.h>
#define LED_PIN 6
#define NUM_LEDS 60
#define BRIGHTNESS 255
// --- Folyékony hatás paraméterei (DUPLA HOSSZ) ---
float spread = 12.0; // Megduplázott csóvahossz (korábban 6.5 volt)
float speed = 1.8; // Kicsit lassabb, méltóságteljesebb hömpölygés
float coreSize = 3.5; // A fényes belső mag mérete
// -------------------------------------------------
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<WS2812B, LED_PIN, GRB>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
FastLED.setBrightness(BRIGHTNESS);
}
void loop() {
// Időalapú pozíció (szinuszos mozgás)
float t = millis() * 0.001 * speed;
// Dinamikus nyúlás: a csóva hossza kicsit változik mozgás közben (higany-effekt)
float dynamicSpread = spread + (sin(t * 1.5) * 2.0);
// A fény középpontja (NUM_LEDS / 2 felett számolva a tükrözés miatt)
float center = (NUM_LEDS / 4.0) * (sin(t) + 1.0);
FastLED.clear();
for (int i = 0; i < NUM_LEDS / 2; i++) {
float dist = abs(i - center);
// 1. EXTRA HOSSZÚ FŐ TEST (Mélyvörös)
// A hatványozott távolság és a nagy spread miatt nagyon hosszan elnyúlik
float intensity = exp(-(dist * dist) / (2.0 * dynamicSpread));
if (intensity > 0.002) { // Nagyon alacsony küszöb a hosszú uszályért
// Alapszín kiszámítása (Mélyvörös)
uint8_t r = intensity * 255;
// 2. BELSŐ MAG (Fényes narancsos-piros)
// Ez adja a "higany" súlyát a közepén
float coreIntensity = exp(-(dist * dist) / (2.0 * coreSize));
uint8_t g = coreIntensity * 80; // Narancssárgás izzás
uint8_t b = coreIntensity * 15; // Minimális fehérítés a legközepén
CRGB finalColor = CRGB(r, g, b);
// Bal oldali ág (széltől középig)
leds[i] = finalColor;
// Jobb oldali ág (végétől visszafelé tükrözve)
leds[NUM_LEDS - 1 - i] = finalColor;
}
}
// Szoftveres simítás a FastLED belső rutinjaival
FastLED.show();
delay(5); // Ultra-magas frissítés a tökéletes folyékonyságért
}