Main

Référence : Langage Arduino : [ Mini | Standard | Etendue | Maxi ] Librairies : [ Vue d'ensemble | Synthèse ] Infos : [ Comparaison | Changements ]

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)

Valeur renvoyée

Aucune

Attention

  • 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.

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
}
 

Voir également

Et aussi :

Commentaires utilisateurs

  • La fonction delayMicroseconds fonctionne normalement à l'intérieur de la fonction attachée.

Page d'accueil de la référence Arduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino ou à l'adresse suivante : support_at_mon-club-elec_point_fr

Le texte original de la référence Arduino est sous licence Creative Commons Attribution-ShareAlike 3.0 . Les exemples de code dans la référence sont dans le domaine public.

La présente traduction française commentée a été réalisée par Xavier HINAULT (2010-2012) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.