Amanecer con panel LED

Hola y bienvenidos a nuestra contribución de hoy.

 

Un miembro de la comunidad se inspiró en nuestras contribuciones y una Reloj construido con despertador. Antes de la alarma de la mañana, un panel RGB U-64 debe simular la luz de un amanecer para permitir una llamada de atención más suave.

La biblioteca FastLED, que prefiero, ofrece la posibilidad de definir sus propios degradados de color.

Cada LED consiste internamente en un LED rojo, verde y azul muy pequeño, así como un chip de control muy pequeño, que controla el brillo de los colores individuales.

Cada color se puede establecer por un valor entre 0 (desactivado) y 255 (brillo completo).

Por lo tanto, el color y el brillo del LED se compone de 3 valores, cada uno para rojo, verde y azul.

Rojo

Verde

Azul

Color LED

255

0

0

Rojo

0

255

0

Verde

0

0

255

Azul

255

255

0

Amarillo

0

255

255

Cian

 

Así que ahora que sabemos cómo ensamblar los colores, sólo necesitamos especificar un degradado.

Gracias a una función relativamente nueva en la biblioteca FastLED, podemos definir estos gradientes muy fácilmente. 

Todo se puede imaginar como una lista. Primero es el número de línea, seguido de los valores de rojo, verde y azul. Podemos personalizarlos para cada línea.

Por lo tanto, si mi tabla tiene 255 filas, eso sería mucho trabajo para cada fila para introducir manualmente los valores adecuados.

Mediante DEFINE_GRADIENT_PALETTE, podemos especificar el valor deseado para ciertas filas en nuestra tabla. En el ejemplo siguiente, hago esto para las líneas 0, 128, 224 y 255.
El resultado es una tabla con 255 filas en las que los diferentes degradados se calculan para mí.

Si ahora consulto los valores de color para la fila 64 usando ColorFromPalette(), obtengo la media entre 0 y 128 de acuerdo con la media.

En la práctica, la función se llama de la siguiente manera:

DEFINE_GRADIENT_PALETTE ( *name_meiner_palette* ) {
*Número de línea*, *Valor para rojo*, *Valor para Verde*, *Valor para Azul*
};
En el ejemplo, tiene este aspecto:
DEFINE_GRADIENT_PALETTE( sunrise_gp ) {   0,     0,  0,  0,   Negro
128,   240,  0,  0,   Rojo
224,   240,240,  0,   Amarillo
255,   128,128,240 }; azul muy brillante

Sin embargo, para poder utilizar la tabla, todavía tenemos que escribir la tabla "sunrise_gp" en una variable usando CRGBPalette16() o CRGBPalette256().

CRGBPalette256 sunrisePal = sunrise_gp;

A continuación, podemos utilizar el siguiente comando para determinar el color en una posición determinada (-heatIndex).

Crgb Color = ColorFromPalette(sunrisePal, heatIndex);

A continuación, usamos fill_solid() para establecer el color de todos los LED al color determinado:

fill_solid(Leds, NUM_LEDS, Color);



Aquí está el boceto completo:

#include <FastLED.H>

#define DATA_PIN    3
#define LED_TYPE    WS2811
#define COLOR_ORDER Grb
#define NUM_LEDS    64
Crgb Leds[NUM_LEDS];

#define Brillo          128

DEFINE_GRADIENT_PALETTE( sunrise_gp ) {   0,     0,  0,  0,   Negro
128,   240,  0,  0,   Rojo
224,   240,240,  0,   Amarillo
255,   128,128,240 }; azul muy brillante

Vacío Configuración() {   Retraso(1000);   FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(Leds, NUM_LEDS).setCorrection(TypicalLEDStrip);   FastLED.setBrightness(Brillo);   fill_solid(Leds, NUM_LEDS, Crgb(0,0,0)); Todos los píxeles apagados   FastLED.Mostrar();    Amanecer(); Play Sunrise
}    Vacío Bucle()
{
}

Vacío Amanecer() {   Estática uint16_t heatIndex = 0; comenzar en 0   Para (heatIndex=0; heatIndex<255; heatIndex++) {   CRGBPalette256 sunrisePal = sunrise_gp;   Crgb Color = ColorFromPalette(sunrisePal, heatIndex);   llenar toda la tira con el color actual   fill_solid(Leds, NUM_LEDS, Color);   FastLED.Mostrar();    FastLED.Retraso(250);   }
}

 

Con el FastLED.delay podemos ajustar la velocidad.

Con el fin de implementar todo en un reloj despertador, sólo la función amanecer() antes de la alarma peculiar, y la alarma comienza con el proceso de despertador suave.

Si ya ha adquirido experiencia con nuestro módulo MP3 o el conjunto TonUINO, puede ser auditado con ruido de mar o canto de aves. 

Espero que el post de hoy te ayude a controlar los degradados de color de tus neopíxeles. No todos los árboles de Navidad iluminados con neopíxeles tienen que brillar en colores arco iris.

 

 

Projekte für anfänger

Deja un comentario

Todos los comentarios son moderados antes de ser publicados