Bewegungssteuerung soll Leds faden

  1. brauchst du sicher keine ISR

  2. kannst du in einer ISR nichts machen, was Zeit dauert. Also kein Fade

  3. in deinem Fade-Versuch fehlt eine Wartezeit/je Schritt. Für den vollen Bereich (0 <-> 255) eine ViertelSekunde ist Minimum, damit du einen schnellen Effekt siehst. Also bei 5er Schritten ein delay(5) oder mehr in jedem Schritt. Ausserdem ist der beobachtete Unterschied zwischen analogWrite(A0,1); und analogWrite(A0,2); größer als zwischen analogWrite(A0,201); und analogWrite(A0,202);
    Aber das geht jedenfalls nicht in einer ISR.

  4. Hab ich leider nicht kapiert, wie an Pin2 etwas passiert und wofür OutPutPin gut ist.
    Aber wenn es so funktioniert, dann lass doch das digitalWrite(ledpin, state) in der ISR weg,
    merke dir in loop den alten Zustand der Led, und bei einem Unterschied fadest du entweder rauf oder runter.
    Wenn du das Faden auf jeden Fall komplett machen willst, geht das mit einer for Schleife mit delays.

Sonst ( wenn du halb hochgefadet wieder umkehren willst ), nur einen Schritt je loop Durchlauf und der geht entweder rauf oder runter:

void loop()
{

  // ... deine Outputvalue- Geschichte wie bisher ...

   static byte fadevalue;
   if (state == HIGH && fadevalue < 255) fadevalue++;
   if (state == LOW && fadevalue > 0)   fadevalue--;
   analogwrite(ledPin, fadevalue);
   delay(2); // größer um den FadeEffekt besser zu sehen
}

edit: mit weniger Fehlern evtl. klarer