Accendere LED in dissolvenza con millis?

Ciao, vorrei accende un LED in dissolvenza e farlo rimanere acceso. Prima di fare ciò ho pensato di far accendere e spegnere un LED in fade. Ho così utilizzato la libreria LEDfader.h con il seguente sketch:

#include <LEDFader.h>

// Create new LED Fader on pin 3
LEDFader led = LEDFader(3);

void setup() {
  led.fade(255, 3000);
}

void loop() {
  led.update();

  if (led.is_fading() == false) {

    // Fade from 255 - 0
    if (led.get_value() == 255) {
      led.fade(0, 3000);
    }
    // Fade from 0 - 255
    else {
      led.fade(255, 3000);
    }
  }
}

Il problema è che appena arduino si accende invece di accendere in dissolvenza il LED esso si spegne dalla luminosità massima.
Ho provato diverse combinazioni e altri codici ma tutti iniziano con il led alla massima luminosità e lo spengono gradualmente oppure il LED si accende al massimo poi si spegne improvvisamente e si accende in fade.
Come posso fare per far partire l’effetto con il LED spento?
Grazie!

Ciao, non conosco quella libreria e non l'ho mai utilizzata ma nel setup con questo

led.fade(255, 3000);

credo che imposti il valore del led pari a 255, quindi tutto acceso, quando passi al loop la prima cosa che fa è spegnerlo Prova a mettere un valore di 0 nel setup così

led.fade(0, 3000);

In questo modo nel setup lo tiene spento ed appena passa al loop attraverso

else {
      led.fade(255, 3000);
    }

lo accende e poi comincia con la dissolvenza... Ciao

Ciao non credo che serva una libreria per accendere un led :slight_smile:
Vuoi usare millis() ti faccio un esempio

#define led 10

unsigned long tempo;

int pausa=300; //intervallo di 300 millisecondi

int valore=0;
void setup(){
      pinMode(led,OUTPUT);
      analogWrite(led,0);
}

void loop(){

    if(valore<=255){
          
         if(millis()-tempo>=pausa){
            
               tempo=millis();
               analogWrite(led,++valore);
         
         }


    }


}

tonid:
Prova a mettere un valore di 0 nel setup così

led.fade(0, 3000);

Avevo già provato anche in questo modo ma il LED parte sempre alla massima luminosità e si spegne.

torn24:
Ciao non credo che serva una libreria per accendere un led :slight_smile:
Vuoi usare millis() ti faccio un esempio

La libreria la usavo per comodità, posso tranquillamente farne a meno :slight_smile:
Ho provato il tuo codice ma parte sempre alla massima luminosità e lo spegne, come posso fare per fargli fare il contrario? Ho girato tutto google e non sono riuscito a trovare nulla…

....ma come hai collegato il led ad arduino, scusa la domanda stupida....

Ho provato il tuo codice ma parte sempre alla massima luminosità

Impossibile, nel codice che ti ho postato mette a zero nel setup() e poi incrementa il valore, stai sicuramente sbagliando qualcosa da qualche parte …

Unico errore è

if(valore<=255){ // cosi fa anche analogWrite(led,256)

dovrebbe essere

if(valore<255){ // csi fa al massimo analogWrite(led,255)

:wink:

Impossibile, nel codice che ti ho postato mette a zero nel setup() e poi incrementa il valore, stai sicuramente sbagliando qualcosa da qualche parte ...

E' per quello che ho chiesto come ha collegato il led, se invece di collegarlo verso GND lo ha collegato verso Vcc il led si accende a logica inversa rispetto il codice... ciao