Problema programmazione contatore

Ciao a tutti, volevo chiedervi se sapete spiegarmi perchè non funziona una parte di programma io vorrei accendere delle luci mediante ir e poterle spegnere però poi vorrei anche che una di queste luci trascorsi un tot di secondi dopo che è accesa si spegnesse da sola se prima non è sta spenta mediante il pulsante vi posto il programma la parte che non mi funziona ha un commento ed è verso la fine.

#include <IRremote.h>

int RECV_PIN = 11;

int reversePin = 13;                 
int forwardPin = 5;                
int playPin = 6;                
int pausePin = 7; 
int val = 0;                  // si userà val per conservare lo stato del pin di input  
int vecchio_val = 0;          // si userà vecchio_val per conservare lo stato del pin di input al passo precedente  
int stato = 0;                // ricorda lo stato in cui si trova il led, stato = 0 led spento, stato = 1 led acceso  
int statopin13 = 0; 
IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  pinMode(reversePin, OUTPUT);      // sets the digital pin as output
  pinMode(forwardPin, OUTPUT);      // sets the digital pin as output
  pinMode(playPin, OUTPUT);      // sets the digital pin as output
  pinMode(pausePin, OUTPUT);      // sets the digital pin as output

  time=mills ();
  
  
}

void loop() {
    val = digitalRead(reversePin);  // legge il valore dell'input e lo conserva  
 
    if ((val == HIGH) && (vecchio_val == LOW)){  
    stato = 1 - stato;  
    delay(15);                // attesa di 15 millisecondi  
  }   
  
  vecchio_val = val; 
   if (irrecv.decode(&results)) {
 if (stato == 1) {
    long int decCode = results.value;
    Serial.println(decCode);
    switch (results.value) {
      case 1431986946:
        Serial.println("Forward");
        digitalWrite(forwardPin, HIGH);   // sets the LED on
        break;
      case 16738455:
        Serial.println("Reverse");
        digitalWrite(reversePin, HIGH);   // sets the LED on
        break;
      case -873913272:
        Serial.println("Play");
        digitalWrite(playPin, HIGH);   // sets the LED on
        break;
      case -1025287420:
        Serial.println("Pause");
        digitalWrite(pausePin, HIGH);   // sets the LED on
        break;  
      case 16730805:
        Serial.println("Stop");
        digitalWrite(forwardPin, LOW);   // sets the LED off
        digitalWrite(reversePin, LOW);   // sets the LED off
        digitalWrite(playPin, LOW);   // sets the LED off
        digitalWrite(pausePin, LOW);   // sets the LED off
        break;  
      default: 
        Serial.println("Waiting ...");
        //pezzo di programma che mi da  problemi
        
        digitalRead (statopin13); //lettura stato pin
       if (statopin13 = 1) //se il pin 13 è alimentato
        time = millis () //fai partire il contatore
       if ( time > 10000) //se il contatore è maggiore di 10000 spegni tutto
       { digitalWrite(forwardPin, LOW);   // sets the LED off
        digitalWrite(reversePin, LOW);   // sets the LED off
        digitalWrite(playPin, LOW);   // sets the LED off
        digitalWrite(pausePin, LOW); }
    }

    irrecv.resume(); // Receive the next value
  }
}}