Une interruption est un déclenchement qui arrête l’exécution d’un programme ou d’un bout de code pour exécuter une autre fonction. C’est typiquement le cas lorsque l’on programme un chronomètre. Le temps s’écoule jusqu’au moment où on décide de stopper le chronomètre afin de lire la valeur inscrite sur l’écran. Une interruption permet ainsi de stopper ou d’effectuer un programme puis d’en reprendre l’exécution à partir de l’instant où il a été stoppé.
Si vous créez un projet qui repose fortement sur des données de capteurs précises et que vous devez donc vous assurer de lire et d'enregistrer toute variation de valeur, il peut être difficile d'écrire un programme capable de faire autre chose correctement. En effet, le microcontrôleur est constamment occupé à lire les valeurs. Pour contourner ce problème, vous pouvez utiliser des interruptions qui peuvent vous aider à lire les entrées d'un encodeur rotatif ou d'un bouton-poussoir, par exemple, sans avoir à insérer de code dans votre fonction de boucle.
Cette fonctionnalité peut s'avérer particulièrement utile pour les développeurs d'un GIGA R1, dont les circuits deviennent de plus en plus complexes.
La syntaxe de création d'une fonction d'interruption doit être incluse dans
void setup()
et est comme suit :
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)
Les différents modes utilisables sont :
Cet exemple de croquis allumera ou éteindra une LED connectée à la broche 13 chaque fois qu'un bouton-poussoir connecté à la broche 2 est enfoncé ou relâché :
const byte ledPin = 13; const byte interruptPin = 2; volatile byte state = LOW; void setup() { pinMode(ledPin, OUTPUT); pinMode(interruptPin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE); } void loop() { digitalWrite(ledPin, state); } void blink() { state = !state; }