Arduino, Interrupções externas
O Arduino Uno possui 2 (0 zero pino 2, e 1 um pino 3) interrupções externas, que podem ser usadas para diversos fins, mais afinal oque é? para que serve?. Imagine a seguinte situação: Seu programa precisa monitorar um sinal de entrada, e esse sinal é de vital importância no processo ao ponto de acontecer algum erro grave se ele não for atualizado na hora que o evento ocorre, é ai que a interrupção entra em ação, todo o programa entra em estado de espera ate a função chamada pela interrupção termine.
Existem varias forma de se chamar uma interrupção porém vou mostra a recomendada.
Exemplo: attachInterrupt(digitalPinToInterrupt(pino), função a ser executada, modo).
attachInterrupt() é a função que chama a interrupção.
digitalPinToInterruptio() é a função que recebe no nome do pino como parâmetro e retorna a interrupção do pino indicado.
E por final o modo de interrupção usado, os modos são (LOW = nível logico 0 ou 0V, HIGH = nível logico alto ou 5V, RISING = transição de subida, FALLING = transição de descida).
#define pinOut 13
#define pinInt 2
volatile int estado = LOW;
void setup() {
pinMode(pinOut, OUTPUT);
pinMode(pinInt, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(pinOut), executar, CHANGE);
}
executar() {
estado = ! estado;
}