O Atmega328 do Arduino possui 2 interrupçoes externas que se encontrão nos pinos digitais 2 (INT0), e 3(INT1). Para ativa-las você precisa do comando attachInterrupt.
Sintaxe:
attachInterrupt (interrupção, função, modo)
interrupção : o número da interrupção ( int )
função : a função para chamar quando a interrupção ocorre.
modo: define quando a interrupção deve ser disparada. Quatro contantes são pré-definidos como valores válidos:
LOW para desencadear a interrupção quando o pino é baixa,
CHANGE para acionar a interrupção sempre que há alterações no valor do pino,
RISING para disparar quando o pino vai de baixo a alto,
FALLING para quando o pino vai de alto para baixo
Exemplo:
int pin = 13;
volatile int state = LOW;
void setup()
{
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, CHANGE);
}
void loop()
{
digitalWrite(pin, state);
}
void blink()
{
state = !state;
}
Observe que a interrupção usada foi a do pino 2 (INT0); a função usada foi "blink" e que ele foi ativado, na mudança de valor do pino.