Ciao e benvenuto al nostro post oggi.
Un membro della comunità si è ispirato ai nostri post e uno Orologio radio costruito con sveglia. Prima dell'allarme mattutino, un pannello RGB U-64 dovrebbe simulare la luce dell'alba per consentire un risveglio più delicato.
La libreria FastLED che preferisco offre la possibilità di definire i miei gradienti di colore.
Ogni LED è costituito da un LED rosso, verde e blu molto piccolo e da un chip di controllo molto piccolo che controlla la luminosità dei singoli colori.
Ogni colore può essere impostato con un valore compreso tra 0 (spento) e 255 (piena luminosità).
Il colore e la luminosità del LED sono composti da 3 valori, ciascuno per rosso, verde e blu.
rosso |
verde |
blu |
Colore LED |
255 |
0 |
0 |
rosso |
0 |
255 |
0 |
verde |
0 |
0 |
255 |
blu |
255 |
255 |
0 |
giallo |
0 |
255 |
255 |
ciano |
Ora che sappiamo come vengono messi insieme i colori, tutto ciò che dobbiamo fare è specificare un gradiente.
Grazie a una funzione relativamente nuova nella libreria FastLED, possiamo facilmente definire tali processi.
Il tutto può essere pensato come un elenco. La prima riga è il numero di riga, seguito dai valori per rosso, verde e blu. Possiamo aggiustarlo per ogni riga.
Quindi, se la mia tabella fosse lunga 255 righe, ci vorrebbe molto lavoro per inserire manualmente i valori appropriati per ogni riga.
Utilizzando DEFINE_GRADIENT_PALETTE possiamo specificare il valore desiderato per determinate righe nella nostra tabella. Nell'esempio seguente, lo faccio per le linee 0, 128, 224 e 255.
Il risultato è una tabella con 255 righe in cui vengono calcolati i diversi gradienti di colore.
Se ora uso ColorFromPalette () per eseguire una query sui valori di colore per la riga 64, ottengo la media tra 0 e 128.
In pratica, la funzione è chiamata come segue:
DEFINE_GRADIENT_PALETTE( sunrise_gp ) { 0, 0, 0, 0, // nero 128, 240, 0, 0, // rosso 224, 240,240, 0, // giallo 255, 128,128,240 }; // molto azzurro
Per poter usare la tabella, tuttavia, dobbiamo ancora scrivere la tabella "sunrise_gp" su una variabile usando CRGBPalette16 () o CRGBPalette256 ().
CRGBPalette256 sunrisePal = sunrise_gp;
Quindi possiamo determinare il colore in una posizione specifica (= heatIndex) usando il seguente comando.
CRGB colore = Colore dalla tavolozza(sunrisePal, indice di calore);
Quindi usiamo fill_solid () per impostare il colore di tutti i LED sul colore determinato:
fill_solid(leds, NUM_LEDS, colore);
Ecco lo schizzo completo:
#include <FastLED.B> #define DATA_PIN 3 #define LED_TYPE WS2811 #define COLOR_ORDER GRB #define NUM_LEDS 64 CRGB leds[NUM_LEDS]; #define LUMINOSITÀ 128 DEFINE_GRADIENT_PALETTE( sunrise_gp ) { 0, 0, 0, 0, // nero 128, 240, 0, 0, // rosso 224, 240,240, 0, // giallo 255, 128,128,240 }; // molto azzurro vuoto configurazione() { ritardo(1000); FastLED.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); FastLED.SetBrightness(LUMINOSITÀ); fill_solid(leds, NUM_LEDS, CRGB(0,0,0)); // Tutti i pixel sono spenti FastLED.spettacolo(); alba(); // Gioca all'alba } vuoto cappio() { } vuoto alba() { statica uint16_t indice di calore = 0; // inizia da 0 per (indice di calore=0; indice di calore<255; indice di calore++) { CRGBPalette256 sunrisePal = sunrise_gp; CRGB colore = Colore dalla tavolozza(sunrisePal, indice di calore); // riempie l'intera striscia con il colore corrente fill_solid(leds, NUM_LEDS, colore); FastLED.spettacolo(); FastLED.ritardo(250); } }
Con FastLED.delay possiamo regolare la velocità.
Per implementare il tutto in una sveglia, solo la funzione alba ()essere chiamato prima della sveglia stessa e la sveglia avvia il delicato processo di sveglia.
Chiunque abbia già acquisito esperienza con il nostro modulo MP3 o il set TonUINO può anche essere opportunamente cosparso in modo udibile con il suono del mare o il cinguettio degli uccelli.
Spero che il post di oggi ti aiuti a capire meglio i tuoi gradienti Neopixel. Non tutti gli alberi di Natale illuminati con neopixel devono brillare nei colori dell'arcobaleno.