attachInterrupt (interruption, fonction, mode)

Description

Spécifie la fonction à appeler lorsqu'une interruption externe survient. Remplace tout autre fonction qui était attaché à cette interruption. La plupart des cartes Arduino ont deux interruptions externes : interruption externe n°0 sur la broche numérique 2 et interruption externe n°1 sur la broche numérique 3. La carte Arduino Mega en possède quatre de plus : interruption externe n°2 sur la broche 21, n°3 sur la broche 20, n°4 sur la broche 19 et n°5 sur la broche 18.

Syntaxe

attachInterrupt (interruption, fonction, mode)

Paramètres

  • interruption: le numéro de l'interruption (type int)
  • fonction: la fonction à appeler quand l'interruption survient; la fonction doit recevoir aucun paramètres et ne renvoie rien. Cette fonction est également appelée une routine de service d'interruption (ou ISR).
  • mode: définit la façon dont l'interruption externe doit être prise en compte. Quatre constantes ont des valeurs prédéfinies valables :
    • LOW: pour déclenchement de l'interruption lorsque la broche est au niveau BAS
    • CHANGE: pour déclenchement de l'interruption lorsque la broche change d'état BAS/HAUT
    • RISING: pour déclenchement de l'interruption lorsque la broche passe de l'état BAS vers HAUT (front montant)
    • FALLING: pour déclenchement de l'interruption lorsque la broche passe de l'état HAUT vers l'état BAS (front descendant)

Valeurs Renvoyées

  • Aucune

Exemple

int pin = 13; volatile int state = LOW; // déclartion d'une variable volatile void setup() { pinMode(pin, OUTPUT); attachInterrupt(0, blink, CHANGE); // attache l'interruption externe n°0 à la fonction blink } void loop() { digitalWrite(pin, state); // la LED reflète l'état de la variable } void blink() // la fonction appelée par l'interruption externe n°0 { state = !state; // inverse l'état de la variable }

※ Remarque:

  • A l'intérieur de la fonction attachée à l'interruption, la fonction delay ne fonctionne pas et la valeur renvoyée par millis ne s'incrémente pas. Les données séries reçues pendant l'exécution de la fonction sont perdues.
  • Vous devrez déclarer en tant que volatile toute les variables que vous modifier à l'intérieur de la fonction attachée à l'interruption.
  • Utiliser les interruptions
  • Les interruptions sont très utiles pour faire des choses de façon automatique dans un programme pour microcontrôleur, et peut aider à résoudre les problème de temporisation. Une bonne utilisation pour une interruption peut-être la lecture d'un encodeur tournant, pour contrôler les entrées de l'utilisateur.
  • Si vous voulez que le programme prennent toujours en compte les impulsions venant d'un encodeur tournant, sans jamais négliger une impulsion, il serait très compliqué d'écrire un programme pour faire quoique ce soit, parce que le programme devrait en permanence examiner les broches connectées à l'encodeur, afin de prendre en compte les impulsions lorsqu'elle surviendront. D'autres capteurs ont un rôle d'interface dynamique semblable, tel qu'un capteur de sons essayant détecter un bruit ou un capteur infra-rouge (photo-transistor) essayant de détecter un obstacle. Dans toutes ces situations, l'utilisation des interruptions libère le microcontrôleur pour faire d'autres choses tant que l'évènement attendu ne survient pas.

ARDUINO BUY RECOMMENDATION

Arduino UNO R3
Arduino Starter Kit
Disclosure: Some links in this section are Amazon affiliate links. If you make a purchase through these links, we may earn a commission at no extra cost to you.
Additionally, some links direct to products from our own brand, DIYables.

※ OUR MESSAGES