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+ |
También puedes comprarlos por separado en los enlaces a continuación.
INTRODUCCIÓN DEL COMPONENTE |
ENLACE DE COMPRA |
|---|---|
- |
Esquemático
Cableado
Código
Nota
Abre el archivo
5.13.interrupt.inoen la ruta3in1-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 usardigitalPinToInterrupt(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 sudigitalPinToInterrupt(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:LOWpara activar la interrupción siempre que el pin esté bajo,CHANGEpara activar la interrupción siempre que el pin cambie de valor.RISINGpara activar cuando el pin pasa de bajo a alto.FALLINGpara 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.