Mirate como se emplean las interrupciones:
* attachInterrupt(A, B, C)
* A can be either 0 or 1 for interrupts on pin 2 or 3.
*
* B Name of a function you want to execute while
* in interrupt A.
*
* C Trigger mode of the interrupt pin. can be:
* LOW a low level trigger
* CHANGE a change in level trigger
* RISING a rising edge of a level trigger
* FALLING a falling edge of a level trigger
*
* In all but the IDLE sleep modes only LOW can be used.
Yo la empleo p.ej. asi:
attachInterrupt(0, enciende, CHANGE);
Siendo "enciende" la funcion a la que llamo y que ademas no contenga ningun delay.
Por cierto, asegurate de poner las resistencias de pull en up o down para que no hayan interferencias.
Un saludo.