Problemi fading led con millis()

Ciao a tutti, non sono un esperto con programmazione ed Arduino, e sono giorni che mi scervello su di un problema:

Ho creato una libreria di funzioni che fanno svolgere azioni specifiche ad un gruppo di 6 led.

Una di queste riguarda il fading da off a on, eseguito in un periodo stabilito e che una volta arrivato all'intensità massima vi rimane.

bool statoSfumaUp3W = 0;



void SfumaUp3W(int periode)                           // funzione di controllo dello stato dell'altra funzione
{
  statoSfumaUp3W = Sfumaup3W(periode, time, statoSfumaUp3W);
}


int Sfumaup3W(int taimu, int istante, bool state)   //taimu = periodo, istante = millis()
{
  taimu *= 2;
  int value;
  
  if(state == 0)
  {
    value = 128 + 127 * -cos(2*PI/taimu*istante);    //valore tra 128 + (127 * -1) e 128 + (127 * 1)

    analogWrite(led3W1, value);
    analogWrite(led3W2, value);
    analogWrite(led3W3, value);
    analogWrite(led3W4, value);
    analogWrite(led3W5, value);
    analogWrite(led3W6, value);
    
    if (value > 253)
    {
      state = 1;
      digitalWrite(led3W1,HIGH);
      digitalWrite(led3W2,HIGH);
      digitalWrite(led3W3,HIGH);
      digitalWrite(led3W4,HIGH);
      digitalWrite(led3W5,HIGH);
      digitalWrite(led3W6,HIGH);
    }
  }
  
  return state;
}

(So che non è ordinatissima e che poteva essere organizzata in modo più intelligente, ma ho fatto del mio meglio)

Il problema è che si basa sul coseno, che varia nel tempo. La luminosità del led iniziale dipende quindi dall'istante in cui ci si trova.

Come faccio a fargli svolgere una funzione di aumento della luminosità, in modo che poi mantenga lo stato on e nient'altro?

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

Non so perché usi il coseno.
Comunque. devi calcolare l' angolo in modo che passa da 0 al massimo nel tempo vluto e poi fermati.

Ciao Uwe