Problema Millis

Salve sto avendo un problema sulla funzione millis, il led si dovrebbe spegnere dopo un intervallo di tempo se il ricevitore ir non riceve nulla ma non funziona. Grazie in anticipo

#include <IRremote.h>
#define led  13
int RECV_PIN = 12;
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long interval= 1000;
unsigned long previousMillis = 0;
int ledState = 0;

void setup() {
 Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  pinMode (led,OUTPUT);
}

void loop(){ 
  if (irrecv.decode(&results)) // have we received an IR signal?
  {
    Serial.println(results.value, HEX);  //stampami il valore del telecomando in esadecimale
    irrecv.resume(); // receive the next value
  } 
  if ( results.value == 0xFFA25D) {
    digitalWrite(led,HIGH);
    unsigned long currentMillis = millis();
      if(currentMillis - previousMillis > interval) {
        previousMillis = currentMillis; //save the last time you blinked the LED
        //if the LED is off turn it on and vice-versa:
        ledState ^= 1;
        digitalWrite(led, ledState);
      }
   } 
  else {
    digitalWrite(led,LOW);
    }
 
}

Come hai fatto tu il pezzo del timer funziona solo se di continuo premi il tasto.
Inoltre hai una "previousMillis" mai inizializzata.
Prova così (non ho provato):

void loop()
{ if (irrecv.decode(&results)) // have we received an IR signal?
  { Serial.println(results.value, HEX);  //stampami il valore del telecomando in esadecimale
    if ( results.value == 0xFFA25D ) 
    { ledState=HIGH;
      digitalWrite(led,ledState);
      previousMillis=millis();
    } 
    irrecv.resume(); // receive the next value
  } 
  if(ledState==HIGH)
  { if( millis() - previousMillis > interval) 
    { ledState =LOW;
      digitalWrite(led, ledState);
      previousMillis=0;
    }
  }  
}