terça-feira, 24 de julho de 2012

Interrupções Externas no Arduino.

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.