Ho cercato di far sfumare i colori l'uno nell'altro per un progetto su cui sto lavorando. L'ho ottenuto con l'effetto arcobaleno che alcuni dal codice di esempio di Adafruit, tuttavia voglio essere in grado di scegliere i colori ( es. blu scuro in azzurro).
Ho i colori che cambiano e sbiadiscono, tuttavia la dissolvenza spegne tutti i LED e inizia ad aumentare la luminosità del nuovo colore. Ho bisogno che i colori si sfumino piuttosto che sbiadiscano e aumentino la luminosità.
Qualcuno è in grado di indicarmi la giusta direzione?
#include "LPD8806.h" #include "SPI.h" #define stripSize 64int nLEDs = 160; int dataPin = 2; int clockPin = 3; // Il primo parametro è il numero di LED nel filamento. Le strisce LED // sono 32 LED per metro ma puoi estendere o tagliare la striscia. I prossimi due // parametri sono i dati SPI e i pin di clock: LPD8806 strip = LPD8806 (64, dataPin, clockPin); // Puoi opzionalmente utilizzare l'SPI hardware per le scritture più veloci, tralasciare // i parametri dei pin di dati e clock. Ma questo limita l'uso a pin molto // specifici su Arduino. Per Arduino "classici" (Uno, Duemilanove, // ecc.), Data = pin 11, clock = pin 13. Per Arduino Mega, data = pin 51, // clock = pin 52. Per 32u4 Breakout Board + e Teensy, data = pin B2, // orologio = pin B1. Per Leonardo, questo può essere fatto SOLO sui pin ICSP.//LPD8806 strip = LPD8806 (nLEDs); void setup () {// Avvia la striscia LED strip.begin (); // Aggiorna la striscia, per iniziare sono tutte 'spente' strip.show ();} void loop () {//turnAllOn(strip.Color(30,30,30),4000); dissolvenza (0, 127, 0, 100); // rosso, verde, blu, ritardo - dissolve tutti i pixel di un colore //turnAllOn(strip.Color(30,100,30),4000); dissolvenza (50, 127, 02,100); // rosso, verde, blu, ritardo - dissolve tutti i pixel di un colore //turnAllOn(strip.Color(100,30,100),4000); dissolvenza (50, 127, 50, 100); // rosso, verde, blu, ritardo - dissolve tutti i pixel di un colore} void fade (uint32_t r, uint32_t g, uint32_t b, uint32_t wait) {int i, j; for (j = 0; j < 384; j ++) {
for (i = 0; i < strip.numPixels (); i ++) {strip.setPixelColor (i, strip.Color ((r * j) / 1000, (g * j) / 1000, (b * j) / 1000 )); } strip.show (); } delay (wait);} void turnAllOn (uint32_t c, uint32_t wait) {int i; per (i = 0; i < strip.numPixels (); i ++) {strip.setPixelColor (i, c); // attiva tutti i pixel} strip.show (); // scrive il ritardo di uscita di tutti i pixel (aspetta); } uint32_t Wheel (uint16_t WheelPos) {byte r, g, b; switch (WheelPos / 128) {caso 0: r = 127 - WheelPos% 128; // Red down g = WheelPos% 128; // Green up b = 0; // pausa blu; caso 1: g = 127 - WheelPos% 128; // green down b = WheelPos% 128; // blu su r = 0; // rosso off break; caso 2: b = 127 - WheelPos% 128; // blue down r = WheelPos% 128; // rosso su g = 0; // pausa verde; } return (strip.Color (r, g, b));}