Aiuto su codice base pulsante-led

Compila, ma non l'ho provato:

// Il led lampeggia se premo il pulsante  
// premendo una seconda volta il pulsante si spegne il led  

#define LED 13                  
#define BUTTON 7                
int val = 0;              // stato attuale del pulsante
int vecchio_val = 0;      // stato del pulsante nella lettura precedente
int stato = 0;            // 0 = led spento, 1 = led lampeggiante
int ledState = LOW;       // stato attuale del led
long previousMillis = 0;      
long interval = 1000;     // semiperiodo di lampeggio del led

void setup() {  
    pinMode(LED, OUTPUT);         
    pinMode(BUTTON, INPUT);       
}  

void loop() {  
    val = digitalRead(BUTTON);    

    if ((val == HIGH) && (vecchio_val == LOW)) {
        // inverto il flag di abilitazione al lampeggio
        stato = 1 - stato;
        
        // non appena cambia il flag di abilitazione al lamepggio
        // aggiorniamo lo stato del led
        
        if (stato == 0) {
            // se il lampeggio è stato disabilitato, spegnamo subito il led
            ledState = LOW;
            digitalWrite(LED, ledState);
        }
        else {
            // se il lampeggio è stato abilitato, accendiamo subito il led
            // e inizializziamo il timer del lampeggio
            ledState = HIGH;
            digitalWrite(LED, ledState);
            previousMillis = millis();    // il led cambierà stato dopo interval ms da ora
        }
        
        delay(15);
    }   

    vecchio_val = val;

    if (stato == 1) { 
        unsigned long currentMillis = millis();

        if(currentMillis - previousMillis > interval) {

            previousMillis = currentMillis;   

            if (ledState == LOW)
                ledState = HIGH;
            else
                ledState = LOW;

            digitalWrite(LED, ledState); 
        }
    }  
    else {
        // probabilmente questo ora non serve
        digitalWrite(LED, LOW);      
    }  
}

L'idea è che se vuoi reagire immediatamente alla pressione del pulsante, allora devi pilotare il led non appena ha rilevato tale evento.