sketch striscia led rgb

ciao a tutti, voglio condividere il mio sketch per creare un effetto fade del tutto casuale su una striscia led rgb 12 volt. Lo sketch funziona correttamente e siete liberi di usarlo e modificarlo come volete. Se avete domande o consigli chiedete pure ;)

// date 26/01/2017
// creato da Michele Mestre
// FADE CASUALE STRISCIA LED RGB A STATI FINITI 
//Il funzionamento del programma è semplice: si basa sull' esempio Fade solo che funziona a stati finiti. Il tempo che serve a creare l' effetto dissolvenza (che sul esempio
// Fade è di 30 millisecondi) e scelto in maniera casuale tra i 5 e 50 millisecondi, questo permette di accendere e spegnere i led rossi, verdi e blu a tempi e velocità 
// del tutto casuali
//
// BUON DIVERTIMENTO
#define ledr 9  //pin led rosso
#define ledg 10  //pin led verde
#define ledb 11  //pin led blu  

int fader = 5; 
int fadeg = 5;
int fadeb = 5;

int lumr = 0;  
int lumg = 0;
int lumb = 0;

unsigned long t; 
unsigned long r; 
unsigned long g;
unsigned long b;

int ranr = 10;
int rang = 20;
int ranb = 30;

void setup(){
  pinMode(ledr, OUTPUT);
  pinMode(ledg, OUTPUT);
  pinMode(ledb, OUTPUT);
}

void loop(){
  randomSeed(millis());
  t=millis(); 
  if(t>r+ranr){
    analogWrite(ledr, lumr);
    lumr = lumr + fader;
    if(lumr == 0 || lumr == 255){
      fader = -fader;
      ranr = random(5,50);
    }
    r=millis();
  }
  if(t>g+rang){
    analogWrite(ledg, lumg);
    lumg = lumg + fadeg;
    if(lumg == 0 || lumg == 255){
      fadeg = -fadeg;
      rang = random(5,50);
    }
    g=millis();
  }
  if(t>b+ranb){
    analogWrite(ledb, lumb);
    lumb = lumb + fadeb;
    if(lumb == 0 || lumb == 255){
      fadeb = -fadeb;
      ranb = random(5,50);
    }
    b=millis();
  }
}