#include <FastLED.h>
#define PIN_LEDS 6
#define NUM_LEDS 7
CRGB leds[NUM_LEDS];
// ===============================
// GENOTIPO ONDULATORIO
// ===============================
// --- Modos internos (ejemplo real) ---
const float modo0 = 0.97;
const float modo1 = 0.025;
const float modo2 = 0.004;
const float modo3 = 0.001;
const float modo4 = 0.0005;
// --- Coherencias modales (Y–U, Y–V, etc.) ---
const float coh_uv = -0.82; // ejemplo real
const float coh_sat = 0.91; // ejemplo real
// --- Complejidad LZ (0.06 cine → 1.28 ruido) ---
float LZ = 0.12; // baja = estructura, alta = caos
// --- Forma de onda ---
float forma_sim = 0.68; // suavidad
float forma_rep = 0.74; // repetición
// --- Estado modal dinámico ---
float x[5] = {0.2, 0.1, 0.05, 0.02, 0.01};
// ===============================
// PARÁMETROS DERIVADOS
// ===============================
// Imprevisibilidad controlada por LZ
float jitter_amp = 0.02 + LZ * 0.15;
// Suavidad controlada por forma_sim
float suavizado = 0.90 + forma_sim * 0.08;
// Estabilidad controlada por forma_rep
float estabilidad = 0.5 + forma_rep * 0.4;
// ===============================
// SETUP
// ===============================
void setup() {
FastLED.addLeds<WS2812, PIN_LEDS, GRB>(leds, NUM_LEDS);
FastLED.setBrightness(255);
}
// ===============================
// LOOP PRINCIPAL
// ===============================
void loop() {
unsigned long t = millis();
// --- 1. Evolución modal ---
for (int i = 0; i < 5; i++) {
float jitter = (random(100 - jitter_amp*100, 100 + jitter_amp*100) / 100.0);
float nx = x[i] + 0.01 * sin(t * 0.001 * (i+1)) * jitter;
x[i] = suavizado * x[i] + (1.0 - suavizado) * nx;
}
// Normalización modal
float norma = 0;
for (int i = 0; i < 5; i++) norma += x[i] * x[i];
norma = sqrt(norma);
for (int i = 0; i < 5; i++) x[i] /= norma;
// --- 2. Señal luminosa ---
float señal =
modo0 * x[0] +
modo1 * x[1] +
modo2 * x[2] +
modo3 * x[3] +
modo4 * x[4];
// --- 3. Intensidad con estabilidad ---
static float y = 128;
float raw = 128 + señal * 180;
y = estabilidad * y + (1.0 - estabilidad) * raw;
// --- 4. Color coherente ---
uint8_t r = constrain(y * (1.0 + coh_sat * 0.1), 0, 255);
uint8_t g = constrain(y * (1.0 + coh_uv * 0.1), 0, 255);
uint8_t b = constrain(y * (1.0 - coh_uv * 0.1), 0, 255);
// --- 5. Coherencia espacial ---
for (int i = 0; i < NUM_LEDS; i++) {
float fase = 1.0 + 0.05 * sin(i + t * 0.01);
leds[i] = CRGB(r * fase, g * fase, b * fase);
}
FastLED.show();
delay(25);
}
Loading
esp32-c3-devkitm-1
esp32-c3-devkitm-1