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?