Interrupts

Intro

Interrupts are useful for automatically executing things in microcontroller programs and can solve timing problems. Good tasks for using an interrupt may include reading a rotary encoder or monitoring user input.

External interrupt pins available:

  • NEXTuino RISE (like Arduino Uno): 2 external interrupts — IN0/INT.0 (pin 2), IN1/INT.1 (pin 3)
  • NEXTuino PEAK/MEGA (like Arduino Mega): 6 external interrupts — D0/INT.0, D1/INT.1, IN0/INT.5, IN1/INT.4, SDA/INT.3, SCL/INT.2

Pin change interrupts can be enabled on many more pins.

Hardware Required

  • NEXTuino RISE/MAXI/MEGA
  • 12/24V DC Power supply

Note: Pin header is working on 5V TTL levels. Voltage levels over 5.5V can damage the NEXTuino permanently.

Code

#include <NEXTuino.h>

const byte digital_output = NEXTuino_D0;
const byte interruptPin = NEXTuino_IN1;
volatile byte state = LOW;

void setup() {
  pinMode(digital_output, OUTPUT);
  pinMode(interruptPin, INPUT);
  attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE);
}

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

void blink() {
  state = !state;
}