Problemino sketch

Tu hai scritto una porzione di codice che incrementa il valore della luminosità del led con una variabile che contiene un numero anche maggiore di 1.
Ammettiamo che questo valore sia appunto 5 ed ammettiamo che la luminosità attuale del led sia 253. Facendo 253+5 ottieni 2, ed il test che fai tu:

if ((valoreLed >= 255) || (valoreLed <= 0))

viene saltato, quindi il ciclo viene ripetuto un'altra volta, senza che il fade torni a 0.

Mi scuso anche per averti fatto ingrullire perché ho fatto un errore nel precedente codice, dove ho messo incremento di tipo byte mentre serve di tipo char, dato che poteva andare anche negativo.
Questo codice funziona con qualunque incremento di fading (basta che sia max di 127).

char incremento=5;
byte valoreLed=0;
byte LED = 3;

void setup() {
}

void loop() {
  analogWrite(LED, valoreLed);
  if (incremento > 0) {
    if (valoreLed > (255-incremento)) {
      incremento *= -1;
    }
  } else {
    if (valoreLed < abs(incremento)) {
      incremento *= -1;
    }
  }
  valoreLed += incremento;
  delay(25);
}