funzione random led ws2812

Salve a tutti, sto utilizzando i chip led ws2812 per creare un mini display. Al momento per iniziare ho collegato solamente 3 led e provato ad utilizzare la funzione random ma ho qualche difficoltà per quello che vorrei ottenere. Lo sketch utilizzato è il seguente

#include <Adafruit_NeoPixel.h>
#include <avr/power.h>
#define PIN 8
// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(3, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
}
void loop() {
  strip.setPixelColor(0,random(50),random(50),random(50));
  strip.setPixelColor(1,random(50),random(50),random(50));
  strip.setPixelColor(2,random(50),random(50),random(50));
  strip.show();
  delay(1000);
}

Il mio obbiettivo sarebbe riuscire ad accendere tutti i led in modo intermittente/casuale con solo 3 tonalità di colore (nello specifico giallo chiaro, blu/azzurro e rosso) e qui sorgono le prime difficoltà. Innanzitutto essendo in funzione random i colori possono appunto mischiarsi (uscendo da quei tre sopra citati); l altro problema riguarda invece la necessità di snellire il programma in quanto al momento sto usando solo 3 led ma l obbiettivo è usarne circa 50, e verrebbe un programma decisamente troppo lungo e complesso. Quello che vi chiedo quindi è, esiste il modo per non mischiare i colori ed accendere in modo casuale i led senza dover per forza scrivere una riga di codice per ognuno? Grazie mille in anticipo.

non ho verificato… ma dovrebbe funzionare…

#define AA 0, 255, 255, 100     // giallo chiaro
#define BB 137, 240, 250        // azzurro
#define CC 250, 0, 0            // rosso

int scelta=0;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(3, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
  randomSeed(analogRead(0));
}

void loop() {
  for (int x =1 ; x<4; x++) {     // numero led da accendere
     scelta = random(3);          // scelta colore  (limMax -1)
     switch scelta {
        case 0:
            strip.setPixelColor(x,AA);
            break;
        case 1:
            strip.setPixelColor(x,BB);
            break;
        case 2:
            strip.setPixelColor(x,CC);
            break;
     }
  }
  strip.show();
  delay(1000);
}

Ho provato il programma che mi hai scritto (gentilissimo tra l'altro grazie mille), purtroppo però ha qualche inconveniente ancora. Il primo led rimane sempre spento mentre si accendono ad intermittenza gli altri 2 senza mai spegnersi (cosa che mi serviva ma che non avevo specificato effettivamente, colpa mia).

Si avevo supposto che il primo led fosse l’uno e non lo zero… ho corretto il valore della x nel ciclo for

#define AA 0, 255, 255, 100     // giallo chiaro
#define BB 137, 240, 250        // azzurro
#define CC 250, 0, 0            // rosso

int scelta=0;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(3, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
  randomSeed(analogRead(0));
}

void loop() {
  for (int x =0 ; x<3; x++) {     // numero led da accendere  la striscia parte da parte da zero non da 1
     scelta = random(3);          // scelta colore  (limMax -1)
     switch scelta {
        case 0:
            strip.setPixelColor(x,AA);
            break;
        case 1:
            strip.setPixelColor(x,BB);
            break;
        case 2:
            strip.setPixelColor(x,CC);
            break;
     }
  }
  strip.show();
  delay(1000);
}

Ho corretto il valore ed ora si accende anche il primo led, rimane xó sempre il problema che non si spengono mai, fanno solo il cambio colore

Ok ho risolto mettendo #define DD 0,0,0 e cambiando il limite del valore scelta=random(4), grazie mille per l’aiuto:)