Crear interrupción externa en Arduino
Adruino tiene varios tipos de interrupciones. Interrumpir es un proceso mediante el cual arduino detiene su tarea regular o detiene su bucle y va a la función de interrupción para completar su tarea de función de interrupción dada. Interrupción externa creada externamente. Solo hay dos pines de interrupción externos en arduino uno . Son el pin digital 2 y el pin digital 3.
Después de la inicialización de la interrupción externa si hay algún cambio en la señal en este pin. Entonces eso creará una interrupción externa.
Paso 1: pines de interrupción externa

Arduino uno tiene dos pines de interrupción externos Pin digital 2 y Pin digital 3.
Arduino Mega tiene 6 pines de interrupción externos Pin digital 2, Pin digital 3, Pin digital 21, Pin digital 20, Pin digital 19 y Pin digital 18.
Paso 2: Función Arduino AttachInterrupt ()
La función attachInterrupt () se utiliza para crear interrupciones externas.
Sintaxis
attachInterrupt (interrupción, ISR, modo)
attachInterrupt (pin, ISR, modo) (solo Arduino debido)
Parámetros
interrupción: el número de la interrupción (int)
pin: el número de pin (solo Arduino Due)
ISR: el ISR a llamar cuando ocurre la interrupción; Esta función no debe tomar parámetros y no devolver nada. Esta función a veces se denomina rutina de servicio ininterrumpida. Modo: define cuándo se debe activar la interrupción. Cuatro constantes están predefinidos como valores válidos:
(1) BAJO: para activar la interrupción siempre que el pin esté bajo,
(2) CAMBIO: para activar la interrupción cada vez que el pin cambia de valor
(3) RISING: para disparar cuando el pin va de bajo a alto,
(4) CAÍDA: para cuando el pasador va de mayor a menor.
La tabla Due también permite:
HIGH para activar la interrupción siempre que el pin esté alto. (Arduino debido solamente)
Devoluciones:
ninguna.
También puede ver esto desde la página de arduino. Enlace: //www.arduino.cc/en/Reference/AttachInterrup ...
Paso 3: escribir un código de interrupción externa (paso-1)
Objetivo: Inicializaremos nuestro aruino para detectar la interrupción externa en el pin digital 2. A través de esta interrupción externa queremos completar una tarea. La tarea es alternar el LED en el pin 13. Eso es si el led en el pin 13 está encendido, luego, después de obtener la interrupción externa, el pin 13 está apagado.
Nota: en la función de interrupción, delay () y millis () no funcionan, pero solo puedes usar delayMicroseconds ().
Vamos a hacerlo.......
Paso 4: Escribir un código de interrupción externa (Configuración vacía ()) (paso-2)

En void setup () tenemos que inicializar el pin digital de 13 como salida y la función de interrupción attatchInterrupt ().
configuración nula ()
{
pinMode (13, SALIDA);
attachInterrupt (0, parpadeo, FALLING);
}
Aquí, el Pin 13 se declara como salida. En el primer parámetro de la función attachInterrupt () es "0". Esto es cero porque usaremos el pin digital 2 como interrupción externa. Aquí "parpadeo" es una función de interrupción. Puede dar cualquier nombre si Usted quiere. Hay cuatro estados en modo: BAJO, CAMBIO, SALIDA, CAÍDA y uno adicional para arduino debido a ALTO. Usamos CAÍDA. Arduino funciona en señal digital. En la señal digital tiene cuatro estados. Se muestran en la figura Usamos FALLING, es decir, siempre que en el pin 2 detecte una señal de borde descendente, irá a interrumpir la función y completará la tarea.
Paso 5: Escribir un código de interrupción externa (Void Loop ()) (paso-3)
Normalmente en este código no hacemos nada en el bucle, pero puede agregar cualquier tipo de tarea a través del código, así que en mi caso:
bucle vacío ()
{
// Añade tu tarea
}
Paso 6: Escribir un código de interrupción externa (Void Blink ()) (paso-4)


Ahora, escribiremos la función de interrupción "parpadeo". Dado que esta es una función de interrupción. Por lo tanto, en esta función no podemos usar delay () y millis (). Pero, solo podemos usar delayMicroseconds ().
parpadeo vacío ()
{
digitalWrite (13, ! digitalRead (13)); // Alternar LED en el pin 13
}
Paso 7: escribir un código de interrupción externa (código final) (paso 5)
configuración nula ()
{
pinMode (13, SALIDA);
attachInterrupt (0, parpadeo, FALLING);
}
bucle vacío ()
{
// Añade tu tarea
}
parpadeo vacío ()
{
digitalWrite (13, ! digitalRead (13)); // Alternar LED en el pin 13
}