FastLed library palette

FastLed library palette è un approfondimento del sistema di generazione e applicazione delle palette.

FastLed library palette

Nel precedente articolo Fastled neopixel palette hai letto come generare una palette colori partendo dal sito Palette Knife e come applicarla ad una strip neopixel usando il metodo ColorFromPalette() messo a disposizione dalla FastLed library.

Uno degli aspetti che più mi piace di Arduino, della community e della programmazione di microcontrollori è certamente la possibilità di usare una libreria “as is” ( così com’è ) per raggiungere il tuo scopo oppure soffermarti ed approfondire fino al livello che ritieni opportuno; ecco perché oggi leggi come funziona la FastLed library palette.

Come è composta la palette per FastLed library palette

Parti subito da quanto appreso nel precedente articolo ed in modo specifico dal codice palette generato dal tool Palette Knife:

DEFINE_GRADIENT_PALETTE( Yellow_Orange_gp ) {
0, 255,199,  0,
34, 255,121,  0,
144, 255, 63,  0,
241, 222, 51,  1,
255, 194, 39,  1};

la domanda che mi sono posto è stata: cosa significano tutti quei numeri e quale ordine stabilisce cosa far visualizzare sui led da parte della libreria FastLed ?

Si lo so le domande sono 2 🙂

Cercando nella documentazione della libreria ho trovato questo interessantissima pagina in cui è dettagliatamente spiegata la struttura della palette.

In particolare la palette se la rappresenti su un software grafico è la seguente:Fastled library palette gradient

In pratica la prima colonna rappresenta la posizione del colore su una scala da 0 a 255, di solito i programmi di grafica usano dividere la barra in percentuale, per cui dovrai convertire i valori: 34,144,241 in valori percentuali in base 255 per cui ad esempio il valore 34:

34 : 255 = x : 100  da cui 255 * 100 / 34 ce corrisponde al valore 13,3% arrotondato a 13%

ovviamente non ho calcolato gli estremi in quanto 0 è corrispondente a 0% e 255 al 100%

I valori così trovati ti indicano le posizioni dei colori lungo la barra.

I valori successivi della matrice, se noti sempre 3, indicano le tre componenti R,G e B relative al colore da visualizzare.

Riassumendo: per ciascuna linea hai una posizione ed un codice cromatico scomposto nelle tre componenti colore RGB.

Hai già compreso che puoi modificare la matrice in modo semplice creando la sfumatura colore che desideri e traducendola in:

posizione, componente R, componente G, componente B

aggiungendo l’una dopo l’altra le line di ciascun colore.

Come uso quello che ho appreso

dopo aver compreso come funziona la FastLed library palette, o meglio, come è composta la palette colori ed aver imparato a comporre le tue palette personali usando un semplice software di grafica è ora di capire come usarla nel tuo sketch.

Il primo passo è convertire la palette da codici ad un oggetto che la libreria FastLed possa utilizzare e per farlo usi la seguente dicitura:

CRGBPalette16 myPal =Yellow_Orange_gp;

ossia l’oggetto myPal da questo momento conterrà il valore del gradiente colore, palette, disegnato con la matrice vista in precedenza.

Puoi quindi procedere, riprendendo l’esempio della libreria FastLed denominato “simple” ad utilizzare la tua palette colori nella funzione:

void FillLEDsFromPaletteColors( uint8_t colorIndex)
{
    uint8_t brightness = 45;
     
    for( int i = 0; i < NUM_LEDS; i++) {
        leds[i] = ColorFromPalette( currentPalette, colorIndex, brightness, currentBlending);
        colorIndex += 3;
    }
}

dove al posto di currentPalette puoi inserire myPal:

void FillLEDsFromPaletteColors( uint8_t colorIndex)
{
    uint8_t brightness = 45;
     
    for( int i = 0; i < NUM_LEDS; i++) {
        leds[i] = ColorFromPalette( myPal, colorIndex, brightness, currentBlending);
        colorIndex += 3;
    }
}

la FastLed library palette provvederà a trasferire le informazioni relative alle posizioni ed ai codici colori a tutti i led della tua strip.

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/elettronica/fastled-library-palette.html

2 commenti

    • Giovanni il 1 Ottobre 2021 alle 18:08
    • Rispondi

    ciao, colevo segnalarti che la suddetta proporzione non è corretta, si moltiplicano gli estremi e si dividono per i medi o viceversa

    34 : 255 = x : 100
    34×100/255

    1. Grazie Giovanni,
      non mi ero accorto dell’errore 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.