Duda con pulsador

Mi pregunta es ¿Cómo puedo recibir sólo un pulso de un pulsador? digamos que queremos encender un led y darle un delay de 500ms, el problema es si se deja presionado el pulsador, el delay surtirá efecto al dejar de presionar el pulsador y tengo esa duda, gracias.

Leyendo solo el flanco del pulso.
Si tu pulsador esta configurador como pull-down por ejemplo, cuando presiones irá a HIGH
El estado anterior será LOW o sea pasa de LOW a HIGH

Entonces si tu memorias el estado anterior y el estado actual y consultas por el flanco es fácil

bool estado, estadoAnt = false; // asigno un valor al estado anterior.

void setup() {
   pinMode(pin, INPUT);
  Serial.begin(9600);
}

void loop() {
   estado = digitalRead(pin);
   if (estado && !estadoAnt) {
       // esto se ejecuta solo en el flanco
      Serial.println("Presionado 1 vez");
   }
   estadoAnt = estado;
}