SK6812 RGBW luminosità led indirizzabili

Buongiorno a tutti,
premetto che sono all'inizio quindi perdonate eventuali domande per voi banali o termini mal usati.

Mi stò cimentando in un progetto dove utilizzo una striscia LED SK6812 RGBW. Ho provato diverse librerie come:
-Adafruit_NeoPixel
-NeoPixelBus_by_Makuna
-FAB_LED-master

Il mio problema è che non riesco a capire come settare la luminosità di un solo pixel senza passargli il valore del colore a mano, vorrei usare delle variabili di colore.
Esempio:

WHITE = (0, 0, 0, 255) //massima luminosità
WHITE = (0, 0, 0, 127) ///metà della luminosità

Mi piacerebbe dichiarare i colori in variabili e poi richiamarli in una funzione che mi fà scorrerre un led luminoso al 80% sugli altri accesi al 20% quindi una cosa simile:
Esempio con comandi della libreria Adafruit_NeoPixel dove 20 e 80 sono intesi come la percentuale di luminosità di quel specifico led:

for (i=0, i<=NUM_LEDS, i++){
	strip.setPixelColor(i-1,white,20);
	strip.setPixelColor(i,white,80);
	strip.show();
	delay(1000);
}

Lo sò che non sono vicino ma se qualche buona anima ha voglia di darmi qualche dritta ne sarei grato.

Grazie mille.

Benvenuto,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione tutto il su citato REGOLAMENTO ... Grazie. :)

nid69ita

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. ;)

Ciao nid69ita,
sorry, mi sono perso la presentazione, sono corso ai ripari. :slight_smile:

Grazie per la risposta.

Maw

Una possibile soluzione è definire i tuoi colori secondo il metodo HSV (Hue Saturation Value) e cambiare il solo Value.

Con la libreria FastLed ad esempio (una delle più complete) potresti fare un qualcosa tipo:

CRGB leds[NumPixels];
......
leds[i] = CHSV(hue, saturation, value); 
......

Chiaramente valorizzando le variabili in modo adeguato a quello che vuoi ottenere.
Non conosceo bene le altre librerie che hai citato, ma immagino ci sia qualcosa di simile.

Ciao Cotestatnt,
grazie per la risposta.
Ma se non ho capito male FASTLED non supporta il chip SK6812.

Nella libreria Adafruit_NeoPixel c'è la gestione HSV ma non capisco come passargli i colori e sopratutto il bianco fatto non in RGB ma usando il led bianco.

uint32_t rgbcolor = strip.ColorHSV(hue, saturation, value);

Non sò se mi sono spiegato. :slight_smile:

Grazie.

Si si certo che è supportato.
Edit: ci sono dei fork che hanno supporto.

Per quanto riguarda il bianco credo che sia gestito dalla libreria autonomamente. Ma tu non vuoi variare l'intensità del colore? O ho capito male?

Uhm ... forse sbaglio, ma i neopixel sono solo RGB, non RGBW, sicuri che una libreria per neopixel supporti un led con un chip in piu all'interno ?

Ciao,
dunque per le librerie fork di fastled se sai darmi qualche nome che supporti sk6812 GRBW te ne sarei grato e ci darò un occhio.
Si mi piacerebbe cambiare la luminosità del colore ma tra i colori c'è il WHITE (però non lo vorrei fare con RGB dato che la striscia ha il led dedicato per il bianco con la tonalità che piace me). :slight_smile:

In merito a Neopixel la libreria Adafruit Neopixel supporta SK6812 RGBW, ci stò "giocando" è che non riesco a fare alcune cose.

Probabilmente sono io che non la sò usare o semplicemente non sò come fare a livello di coding.

Grazie. :wink:

Ciao,
ho risolto facendo una funzione dedicata al bianco e una ai colori. :slight_smile:
Grazie.