Problema Arduino Lettura pulsante

Ciao, per il tuo caso ti consiglio innanzitutto di utilizzare un bel debounce hardware per evitare false letture, dopodiché nel programma quando premi il pulsante setti una variabile che serve a far accendere una sola volta il led indipendentemente da quanto tempo resta premuto il pulsante:

if(digitalRead(pulsante)==HIGH)
{
  if(!flagAcceso)
  {
    flagAcceso=true;
    digitalWrite(led, HIGH);
    delay(tempodelay);
    digitalWrite(led, LOW);  
  }
}
else
{
  flagAcceso=false;
}

In questo modo premi il pulsante, accendi il led per 50ms e poi finché non rilasci il pulsante il led non si accenderà più.
Essendo presente il delay (seppur breve) occorre valutare se in quel tempo arduino non debba verificare altre cose, se no allora va tutto bene così, altrimenti va ripensato tutto con uso di millis().
Attenzione che senza debounce hardware potresti avere risultati inprevedibili