Ceci est une ancienne révision du document !
Table des matières
Les interruptions avec arduino
Interruptions
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.
Toutes les broches GPIO du GIGA R1 peuvent être utilisées pour les interruptions.
La syntaxe de création d'une fonction d'interruption doit être incluse dans
- interuption.ino
void setup() and is as follows: attachInterrupt(digitalPinToInterrupt(pin), ISR, mode) pin represents the pin number of the pin your input sensor is connected to, ISR is the function that is called whenever the interrupt is triggered, and should be defined bt you somewhere in your sketch. mode defines when the interrupt should be triggered, and can be one of four pre-defined modes. The different modes that can be used are: LOW triggers the interrupt when the pin is low. CHANGE triggers whenever the pin changes values. RISING triggers when the pin goes from low to high. FALLING triggers when the pin goes from high to low. This example sketch will turn on or off an LED connected to pin 13 whenever a pushbutton connected to pin 2 is pressed or released: 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; }