Primo programma accensioni luci

Con 50 ms il programma non funziona cioè il led non si accende bene con la pressione del pulsante.
Ho eseguito il programma con una accensione temporizzata e una accensione a relè passo-passo senza l' uso di delay funziona tutto bene.

const int Pulsantepin1 = 2;
const int Pulsantepin2 = 3;
const int Utilizzatorepin1 = 4;
const int Utilizzatorepin2 = 5;
unsigned long previousMillis1 = 0; //Variabile globale Precedente millis
unsigned long interva1 = 10000; // Variabile globale intervallo posto a mezzo secondo
unsigned long previousMillis2 = 0; //Variabile globale Precedente millis
unsigned long interva2 = 200;
unsigned int counter = 0;

int Statopulsante1;
int Statopulsante2;
int Statoutilizzatore1;
int Statoutilizzatore2;

void setup ()
{
  Serial.begin(9600); 
  pinMode (Pulsantepin1, INPUT);
  pinMode (Pulsantepin2, INPUT);
  pinMode (Utilizzatorepin1, OUTPUT);
  pinMode (Utilizzatorepin2, OUTPUT);
}  
void loop ()
{
  unsigned long currentMillis = millis ();
  Statopulsante1 = digitalRead (Pulsantepin1);
  Statopulsante2 = digitalRead (Pulsantepin2);
  Statoutilizzatore1 = digitalRead (Utilizzatorepin1);
  Statoutilizzatore2 = digitalRead (Utilizzatorepin2);
  // ACCENSIONE 1 TEMPORIZZATA
  if (Statopulsante1==HIGH)
  {
    Statoutilizzatore1=HIGH;
    digitalWrite (Utilizzatorepin1, Statoutilizzatore1);
  }  
  else if (Statopulsante1==LOW)
  {
    if (currentMillis - previousMillis1 > interva1)
    {
      previousMillis1 = currentMillis; 
      Statoutilizzatore1=LOW;
      digitalWrite (Utilizzatorepin1, Statoutilizzatore1);  
    }
  }
  // ACCENSIONE 2 
  if (Statopulsante2==HIGH)
    if (Statoutilizzatore2==HIGH)
    {
      if (currentMillis - previousMillis2 > interva2)
      {
        previousMillis2 = currentMillis;
        Statoutilizzatore2=LOW;
        digitalWrite (Utilizzatorepin2, Statoutilizzatore2);
      }
    }
    else
    {
      if (currentMillis - previousMillis2 > interva2)
      {
        previousMillis2 = currentMillis;
        Statoutilizzatore2=HIGH;
        digitalWrite (Utilizzatorepin2, Statoutilizzatore2);
      }
    }
}

Se avete consigli e suggerimenti sul programma sono tutto orecchie.