Ma forse il problema potrebbe essere anche un altro.. mettiamo che nel codice verifica se lo stato del pin è alto esegue delle operazioni, se è di nuovo alto (si ripreme il pulsante) fa altre operazioni.
if(stato==1){
fai questo;
if (stato==1){
fai quest'altro;
}
}
In questo caso se non mette il delay dopo la prima serie di operazioni, quando preme il bottone la prima volta(essendo che lo preme una persona :D) non potrebbe avere il tempo di rilasciarlo che il codice ha già passato il secondo controllo!