IR Sterung Mit Interrupts

Also das ist jetzt der Abgeänderte Code geht aber immernoch nich noch jemand Ideen ?

#include <TimerOne.h>
#include <IRremote.h>
#include <WaitWithoutDelay.h>


int RECV_PIN = 11;  // IR-Receiver PIN
int led = 12;       // Satus-LED PIN
int ledState = 0;   // Zustand Status LED
int modus;          // Modus für Interrupt-Abfrage
int ledr = 6;       // RGB LED rot PIN
int ledg = 7;       // RGB LED grün PIN                       
int ledb = 8;       // RGB LED blau PIN
int SerialBuffer = 0; 
int RedSum = 0;     // Farbsumme von VLC über serial ROT
int GreenSum = 0;   // Farbsumme von VLC über serial grün
int BlueSum = 0;    // Farbsumme von VLC über serial Blau
int RedVal=1;       // Variablen für Fader
int BlueVal=1;      //  "
int GreenVal=1;     //  "
int i=1;            // Zählervariable für Fader
int fadespeed = 10;   // Speed für Fade --> 1: extrem schnell
                      //                --> 10: normal
                      //                --> 100: extrem langsam
  
/////////////////////////////////////////////////////////////////////////////////////

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  pinMode(ledr, OUTPUT); // Setzen der RGB LED Pins als Output
  pinMode(ledg, OUTPUT); // Setzen der RGB LED Pins als Output
  pinMode(ledb, OUTPUT); // Setzen der RGB LED Pins als Output
  
  pinMode(led, OUTPUT); // Status-LED als Output setzen
  
  Serial.begin(38400); // Serial Verbindung zu VLC
 // Serial.begin(9600);
 
  irrecv.enableIRIn(); // Start vom IR-Empfang
}

void leseIR(){
// Ständige Abfrage ob Wert von IR Empfangen, trotz LOOP
  if (irrecv.decode(&results)){
    switch (results.value)  {
     
      case 0xFF10EF: // Modus Fade (DIY 4)
        modus = 1;  
      break;
      
      case 0xFF906F: // Modus pcambi (DIY 5)
        modus = 2;  
      break;
      
     
      
      // DIY 1 FF30CF
      // DIY 2 FBB04F
      // DIY 3 FF708F
      // DIY 4 FF10EF
      // DIY 5 FF906F
      // DIY 6 FF50AF 
      
      case 0xFF02FD:  //Power
       modus = 0;
       setColor(0, 0, 0);         // RGB LEDs ausschalten
      break;
       
       /////////////////////
       //Standart RGB Remote
       /////////////////////
       
      case 0xFFA25D:  //Blau 0,0,255
        modus = 0;
        setColor(0, 0, 255);
      break;
      
      case 0xFF1AE5: //Rot
        modus = 0;
        setColor(255, 0, 0); 
      break;
      
      case 0xFF9A65://Grün
        modus = 0;
        setColor(0, 255, 0); 
      break;  
      
      case 0xFF22DD: //Weiss
        modus = 0;
        setColor(255, 255, 255);
      break;
      
      case 0xFF2AD5: //orange
        modus = 0;
        setColor(255, 165, 0); 
      break;
      
      case 0xFFAA55://Grün mitrtel
        modus = 0;
        setColor(124, 252, 0); 
      break;  
      
      case 0xFF926D: //blau mittel
        modus = 0;
        setColor(92, 172, 238);
      break; 
      
      case 0xFF12ED: //rosa
        modus = 0;
        setColor(255, 228, 196);
      break;      
     
     
     }             // Switch ENDE
  }                // Empfange IR ENDE
 irrecv.resume();  // Receive the next value
}                  // Lese IR ENDE


void setColor (int red, int green, int blue) {
 static  WaitWithoutDelay localwait = WaitWithoutDelay(1000);
 
 if(localwait.wait()) {
    //Serial.println("setColor called");
    // RGB LED: write inverted value for each color
    analogWrite(ledr, 255 - red);
    analogWrite(ledg, 255 - green);
    analogWrite(ledb, 255 - blue);
  }
}
   
   
   ///////////////////
   /// Fade //////////
   ///////////////////
   
 void fade(int Speed){
    static  WaitWithoutDelay localwait = WaitWithoutDelay(Speed);
 
 if(localwait.wait()) {
   
  analogWrite(ledr,255-RedVal);
  analogWrite(ledb,255-BlueVal);
  analogWrite(ledg,255-GreenVal);
  
  RedVal =((i<255)*i)+((i>=255)*255)+((i>511)*(512-i))+((i>766)*(i-766))+((i>=1276)*(i-1276))+((i>1530)*(1530-i))+((i>1786)*(1786-i));
  GreenVal =(i<256)*(1)+(i>255)*(i-255)+(i>510)*(510-i)+(i>1020)*(1020-i)+(i>1274)*(i-1274)+(i>1530)*(i-1531)+(i>1785)*(3571-(2*i));
  BlueVal =(i<764)*(1)+(i>765)*(i-765)+(i>1020)*(1020-i)+(i>1786)*(1786-i);

  if(i>2040){
   i = 1;
  }
  
  i++;
 }
 } // Fade ENDE
 
   
void pcambi(){
  ////////////////
 
  ////////////////
  static  WaitWithoutDelay localwait = WaitWithoutDelay(500);
 
   if(localwait.wait()) {
     if(ledState==1){
        digitalWrite(led, LOW);    // Status LED AUS 
        ledState = 0;
     }else{
     digitalWrite(led, HIGH);       // Status LED EIN
     ledState = 1;
 }
}
}
void loop() {
  leseIR();
if(modus==1){    // Abfrage pb Modus:1 in Interrupt gesetzt
fade(fadespeed); // Starte Fade
}

if(modus==2){    // Abfrage pb Modus:2 in Interrupt gesetzt
pcambi();        // pcaMBI
}

if(modus==3){    // Abfrage pb Modus:3 in Interrupt gesetzt
}
   
   
   
  } // LOOP  Ende