Icono del sitio AranaCorp

Uso de las interrupciones con Arduino

4
(4)

Las interrupciones permiten al microcontrolador ejecutar una función cuando se produce un evento en uno de los pines de interrupción. En lugar de leer constantemente el valor de un sensor, el programa sólo se activará cuando el valor del sensor cambie. Esto resuelve muchos problemas de distribución de tareas.

Material

Esquema

En la placa Arduino UNO, hay dos pines que soportan interrupciones: los pines 2 y 3. Así que conectaremos la salida del botón al pin 2 del Arduino.

Recordatorio de los pines digitales compatibles con las interrupciones

Uno, Nano, Mini, other 328-based2, 3
Uno WiFi Rev.2, Nano Everyall digital pins
Mega, Mega2560, MegaADK2, 3, 18, 19, 20, 21
Micro, Leonardo, other 32u4-based0, 1, 2, 3, 7
Zeroall digital pins, except 4
MKR Family boards0, 1, 4, 5, 6, 7, 8, 9, A1, A2
Nano 33 IoT2, 3, 9, 10, 11, 13, 15, A5, A7
Nano 33 BLE, Nano 33 BLE Senseall pins
Dueall digital pins
101all digital pins (Only pins 2, 5, 7, 8, 10, 11, 12, 13 work with CHANGE)

Código de gestión de interrupciones

La sintaxis para inicializar una interrupción es la siguiente:

attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)

Con pin, el pin utilizado, ISR, la función a activar cuando se detecta el evento y mode, el modo de detección utilizado.

const byte ledPin = 13;
const byte interruptPin = 2;
volatile byte state = LOW;

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  pinMode(interruptPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(interruptPin), onEvent, CHANGE);
  Serial.println(F("Système intialisé"));
}

void loop() {
  digitalWrite(ledPin, state);
}

void onEvent() {
  state = !state;
  Serial.print(F("Switch LED 13 : "));
  if(state){
    Serial.println(F("ON"));
  }else{
    Serial.println(F("OFF"));
  }
}

Advertencia: En la función onEvent(), las funciones millis() y delay(), que dependen de las interrupciones, no funcionarán.

Funciones que hay que conocer para ir más allá en la gestión de las interrupciones

Resultado

Una vez cargado el código, si pulsas el botón, el LED del Arduino debería encenderse y apagarse.

Fuentes

Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 4 / 5. Recuento de votos: 4

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Salir de la versión móvil