Led "sfarfalla" WS2812b arduino uno e FadeLed

Buona sera,
questo è il mio primo post essendo novizio di arduino, ringrazio in anticipo chiunque riuscirà ad aiutarmi.

Allora ho una striscia WS2812b a 144 led collegata ad un alimentatore esterno da 5V e 10A con schema il seguente:

Il progetto servirà a riprodurre delle animazioni per le frecce dinamiche e le luci di posizione della mia auto.
Il lampeggio della freccia funziona alla grande, invece trovo davvero "complicato" settare il fade in quando viene triggerato il pin 3.
Innanzitutto ho trovato una funzione che mi fa correttamente il fade in però ciclicamente riparte da spento. Io vorrei invece che facesse il fade da 0 al max brightness e poi rimanesse acceso.

void RGBLoop(){
  for(int j = 0; j < 3; j++ ) {
    // Fade IN
    for(int k = 0; k < 256; k++) {
      switch(j) {
        case 0: setAll(k,0,0); break;
        case 1: setAll(0,k,0); break;
        case 2: setAll(0,0,k); break;
      }
      showStrip();
      delay(3);
    }

Al di là di questo, non riuscendo a fare la funzione di fade correttamente ho provato a fare semplicemente un "led ON".
I led si accendono correttamente il problema è che sfarfallano. Cioè si vede vistosamente che i led non sono alla massima luminosità e anche se fissi hanno un leggero sfarfallio.
Questo è il codice

#include "FastLED.h"
#define NUM_LEDS 72
CRGB leds[NUM_LEDS];
#define PIN 6
const int buttonPin2 = 2;   
const int buttonPin3 = 3;
int buttonState2 = 0;   
int buttonState3 = 0;
int fadeAmount = 5;  // Set the amount to fade I usually do 5, 10, 15, 20, 25 etc even up to 255.



void setup()
{
  pinMode(buttonPin2, INPUT_PULLUP);
  pinMode(buttonPin3, INPUT_PULLUP);
  FastLED.addLeds<WS2811, PIN, GRB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
  
  //FastLED.addLeds<NEOPIXEL, 8>(leds[0], NUM_LEDS); //led strip for front left
  //FastLED.addLeds<NEOPIXEL, 9>(leds[1], NUM_LEDS); //led strip for front right
}
// *** REPLACE FROM HERE ***


void TurnSignal() {
 
meteorRain(0xff,0x66,0x00,10, 40, true, 3);
}

void meteorRain(byte red, byte green, byte blue, byte meteorSize, byte meteorTrailDecay, boolean meteorRandomDecay, int SpeedDelay) {  
  //setAll(0,0,0);
 
  for(int i = 0; i < NUM_LEDS+NUM_LEDS; i++) {
   
   
    // fade brightness all LEDs one step
    for(int j=0; j<NUM_LEDS; j++) {
      if( (!meteorRandomDecay) || (random(10)>5) ) {
        fadeToBlack(j, meteorTrailDecay );        
      }
    }
   
    // draw meteor
    for(int j = 0; j < meteorSize; j++) {
      if( ( i-j <NUM_LEDS) && (i-j>=0) ) {
        setPixel(i-j, red, green, blue);
      }
    }
   
    showStrip();
    delay(SpeedDelay);
  }
}

void fadeToBlack(int ledNo, byte fadeValue) {
 #ifdef ADAFRUIT_NEOPIXEL_H
    // NeoPixel
    uint32_t oldColor;
    uint8_t r, g, b;
    int value;
   
    oldColor = strip.getPixelColor(ledNo);
    r = (oldColor & 0x00ff0000UL) >> 16;
    g = (oldColor & 0x0000ff00UL) >> 8;
    b = (oldColor & 0x000000ffUL);

    r=(r<=10)? 0 : (int) r-(r*fadeValue/256);
    g=(g<=10)? 0 : (int) g-(g*fadeValue/256);
    b=(b<=10)? 0 : (int) b-(b*fadeValue/256);
   
    strip.setPixelColor(ledNo, r,g,b);
 #endif
 #ifndef ADAFRUIT_NEOPIXEL_H
   // FastLED
   leds[ledNo].fadeToBlackBy( fadeValue );
 #endif  
  }


void DRL() {

fill_solid(leds, NUM_LEDS, CRGB::Blue); //set entire LED strip to Blue
  
}

void loop() {

buttonState2 = digitalRead(buttonPin2);

  if (buttonState2 == LOW) {

    TurnSignal();
   
  } else {
    FastLED.clear();
    FastLED.show();
  }

buttonState3 = digitalRead(buttonPin3);
 
  if (buttonState3 == LOW) {

    DRL();
   
  } else {
    FastLED.clear();
    FastLED.show();
  }
}






// *** REPLACE TO HERE ***

void showStrip() {
 #ifdef ADAFRUIT_NEOPIXEL_H
   // NeoPixel
   strip.show();
 #endif
 #ifndef ADAFRUIT_NEOPIXEL_H
   // FastLED
   FastLED.show();
 #endif
}

void setPixel(int Pixel, byte red, byte green, byte blue) {
 #ifdef ADAFRUIT_NEOPIXEL_H
   // NeoPixel
   strip.setPixelColor(Pixel, strip.Color(red, green, blue));
 #endif
 #ifndef ADAFRUIT_NEOPIXEL_H
   // FastLED
   leds[Pixel].r = red;
   leds[Pixel].g = green;
   leds[Pixel].b = blue;
 #endif
}

void setAll(byte red, byte green, byte blue) {
  for(int i = 0; i < NUM_LEDS; i++ ) {
    setPixel(i, red, green, blue);
  }
  showStrip();
}

Provando invece il codice da solo la striscia si accende correttamente e rimane accesa senza sfarfallare.

#include "FastLED.h"
#define NUM_LEDS 72
CRGB leds[NUM_LEDS];
#define PIN 6


void setup() {
  // put your setup code here, to run once:
FastLED.addLeds<WS2811, PIN, GRB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
}

void loop() {
  // put your main code here, to run repeatedly:
fill_solid(leds, NUM_LEDS, CRGB::Blue); //set entire LED strip to Blue
//showStrip();
}

Qualcuno sa darmi una dritta su cosa causa questo problema?
E se poi sapete anche darmene un'altra su come far fare il fade in e bloccarlo alla massima luminosità?

Vi ringrazio infinitamente.

Scusa ma la loop() ... tu verifichi 2 pulsanti... ma se ne premi uno, accendi un effetto ma comunque l'altro if è falso e quindi viene eseguito il codice di spegni effetto. Mi pare.

P.S. nell'IDE usa CTRL+T che indenta decentemente il codice, scritto così è difficile da leggere

nid69ita:
Scusa ma la loop() ... tu verifichi 2 pulsanti... ma se ne premi uno, accendi un effetto ma comunque l'altro if è falso e quindi viene eseguito il codice di spegni effetto. Mi pare.

P.S. nell'IDE usa CTRL+T che indenta decentemente il codice, scritto così è difficile da leggere

Si, in un if se il pin è triggerato lui mi attiva la funzione, else non attivare nulla.

Il problema è che quando attiva la funzione DLR (fade in e poi fermo a luminosità massima senza fare fade out) i led hanno uno sfarfallio.
Magari più tardi posto un video

Comunque se avessi una dritta di come usare la funzione di fade in e fermo a max brightness senza fade out con la libreria fadeled sarebbe già un ottima cosa.

Per quanto riguarda la formattazione effettivamente è un po’ un casino. Non c’è un compilatore alternativo che magari mi mette i colori alle variabili o alle funzioni o ai define ecc ecc tipo notepad++?

dannygii:
... Non c’è un compilatore alternativo che magari mi mette i colori alle variabili o alle funzioni o ai define ecc ecc tipo notepad++?

Casomai un EDITOR alternativo, il compilatore non c'entra nulla !

Puoi usare quello che ti pare, purché salvi il file in formato ASCII puro senza strane formattazioni all'interno (... NO HTML, NO RTF, ecc. ecc, solo TEXT puro) ... poi dici all'IDE che usi un Editor Esterno (... è una delle opzioni nelle impostazioni dell'IDE) ed il gioco è fatto.

Guglielmo

Si editor scusa.
Ottimo, già meglio! Grazie della dritta