Nous allons voir ensemble dans ce tutoriel l’utilisation d’interruption dans un programme arduino. Les interruptions vont nous permettre d’obtenir des systèmes beaucoup plus rapide et réactifs.
Une interruption c’est quoi ?
- LOW : Passage à état bas du pin
- FALLING : Detection d’un front descendant (passage de l’état haut à l’état bas)
- RISING : Detection d’un front montant (passage de l’état bas à l’état haut)
- CHANGE : Changement d’état du pin
Création d’une interruption
- attachInterrupt(interrupt, function, mode)
- interrupt : numéro du pin (0 pour le pin 2 et 1 pour le pin 3)
- function : fonction à appeler
- mode : type de déclenchement (LOW // FALLING // RISING // CHANGE)
Utilisation
Contexte : Nous voulons que notre chronomètre se stoppe lorsque l’on appui sur un bouton.
Nous allons appeler une fonction « Pause() » lorsque l’utilisateur appuie sur un bouton branché sur le pin 2.
Ainsi, nous aurons la syntaxe suivante :
attachInterrupt(0, Pause, FALLING);
Notez l’absence des parenthèse après l’appel de fonction « Pause ». Vous pouvez coder par exemple la fonction « Pause() » un peu plus loin dans le programme.
Lorsque vous utilisez une interruption, tout le programme se met en « pause » et la fonction appelée dans l’interruption prend le relais. Ainsi, les fonctions de temps « delay() », « millis() » seront également stoppée. Veillez à bien faire attention dans vos programmes pour ne pas avoir de mauvaise surprise !
Exemple
int pin = 13;
volatile int state = LOW; //déclaration 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 d'état de la variable
}
void blink(){
state = !state; //inverse l'état de la variable
}
Grégoire A.