Привожу два примера прерываний.
Ниже пример кода для Arduino, прерывание по таймеру
В этом примере процедура 
flash_led будет выполнятся каждый раз по истечению 0,5 сек.
	PHP код:
	
//Выполнение процедуры по прерыванию таймеру.
#include <MsTimer2.h>
  static boolean output = HIGH;
  
void flash_led() //обработчик прерывания
{
  digitalWrite(13, (output==HIGH) ? output=LOW : output=HIGH);
}
void setup() {
  pinMode(13, HIGH);
  MsTimer2::set(500, flash_led); // 500ms период
  MsTimer2::start();  //включить таймер
}
void loop() 
{
//.....
} 
 Еще один пример работы аппаратного прерывания.
В данном примере  при изменении  напряжения на ножке D2
каждый раз будет выполнятся процедура 
int_on
Таких входов в Arduino всего 2 (D2,D3)
И несколько вариантов настройки событий
LOW - to trigger the interrupt whenever the pin is low, 
CHANGE - to trigger the interrupt whenever the pin changes value 
RISING - to trigger when the pin goes from low to high, 
FALLING - for when the pin goes from high to low.
	PHP код:
	
#define PinA  2
static boolean output = HIGH;
void setup() 
{   
  pinMode(PinA, INPUT); 
  digitalWrite(PinA, HIGH);     // подключить подтягивающий резистор
  attachInterrupt(0, int_on, CHANGE);  // настроить прерывание interrupt 0 на pin 2
} 
void loop()
{
//........
}
// обработка прерывания
void  int_on()
{
digitalWrite(13, (output==HIGH) ? output=LOW : output=HIGH);
}