Nota

¡Hola, bienvenido a la Comunidad de Aficionados a Raspberry Pi, Arduino y ESP32 de SunFounder en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirse?

  • Soporte de expertos: Resuelve problemas posventa y desafíos técnicos con ayuda de nuestra comunidad y equipo.

  • Aprender y compartir: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Vistas previas exclusivas: Obtén acceso anticipado a anuncios de nuevos productos y avances.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.

  • Promociones festivas y sorteos: Participa en sorteos y promociones de fiestas.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [aquí] y únete hoy!

5.13 Interrupt

Si utilizas algún delay() en un proyecto que usa sensores, podrías notar que cuando activas estos sensores, el programa puede no tener efecto. Esto se debe a que la instrucción de retraso hará que el programa se suspenda, y el programa no podrá obtener la señal enviada por el sensor a la placa de control principal.

En este caso, se puede utilizar una interrupción. La interrupción permite que el programa no se pierda un pulso.

En este capítulo, usamos el zumbador activo y botones para experimentar el proceso de uso de interrupciones.

En la función loop(), se utiliza delay(1000) para contar segundos. Pon el botón para controlar el zumbador en la ISR, para que no sea perturbado por el retraso y complete la tarea sin problemas.

Nota

Las ISR son tipos especiales de funciones que tienen algunas limitaciones únicas que la mayoría de las otras funciones no tienen. Una ISR no puede tener parámetros, y no debería devolver nada. Generalmente, una ISR debe ser lo más corta y rápida posible. Si tu sketch usa múltiples ISR, solo una puede ejecutarse a la vez, otras interrupciones se ejecutarán después de que termine la actual en un orden que depende de la prioridad que tengan.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

3 in 1 Starter Kit

380+

3 in 1 Starter Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa SunFounder R3

COMPRAR

Protoboard

COMPRAR

Cables Puente

COMPRAR

Resistencia

COMPRAR

Botón

COMPRAR

Buzzer

-

Esquemático

../_images/circuit_8.6_interval.png

Cableado

../_images/interrupt_bb.jpg

Código

Nota

  • Abre el archivo 5.13.interrupt.ino en la ruta 3in1-kit\basic_project\5.13.interrupt.

  • O copia este código en el Arduino IDE.

  • O carga el código a través del Arduino Web Editor.

Una vez que el código se haya cargado con éxito, enciende el Monitor Serial y verás un número autoincrementado impreso cada segundo. Si presionas el botón, el zumbador sonará. La función del zumbador controlado por botón y la función de temporización no entran en conflicto entre sí.

¿Cómo funciona?

  • attachInterrupt(digitalPinToInterrupt(pin), ISR, mode): Añade una interrupción.

    Sintaxis

    attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)

    Parámetros
    • pin: el número de pin de Arduino. Debes usar digitalPinToInterrupt(pin) para convertir el pin digital real en un número de interrupción específico. Por ejemplo, si te conectas al pin 3, usa su digitalPinToInterrupt(3) como primer parámetro.

    • ISR: la ISR a llamar cuando ocurra la interrupción; esta función no debe tomar parámetros y no debe devolver nada. Esta función a veces se conoce como una rutina de servicio de interrupción.

    • mode: define cuándo se debe activar la interrupción. Cuatro constantes están predefinidas como valores válidos:

      • LOW para activar la interrupción siempre que el pin esté bajo,

      • CHANGE para activar la interrupción siempre que el pin cambie de valor.

      • RISING para activar cuando el pin pasa de bajo a alto.

      • FALLING para cuando el pin pasa de alto a bajo.

Nota

Diferentes placas de control principal pueden usar pines de interrupción de manera diferente. En la placa R3, solo el pin 2 y el pin 3 pueden usar interrupción.