Les interruptions - Comptage d'événements
Définition : Qu'est-ce qu'une interruption ?
Une interruption est une manière de signaler au microcontrôleur qu'un événement précis s'est produit.
Lorsqu'un tel événement se produit, le programme est littéralement interrompu et le microcontrôleur est forcé d'exécuter une partie de code dédié à cette interruption.
Méthode : Mise en évidence de l'utilité
Ouvrir le programme d'exemple Digital/Button
Ajout d'une tâche consommatrice de temps après la lecture de l'état du bouton.
//On simule une tache complexe consommatrice en temps.
for (int i = 0; i < 100; i++)
{
delay(10); // on attend...
}
Conclure sur le comportement du programme
La led s'allume t'elle toujours au moment ou on appui sur le bouton ?
La led s'éteint elle toujours au moment ou on relâche le bouton ?
Expliquer pourquoi.
Méthode : Programmer une interruption
Lorsque l'événement à surveiller survient, le programme est interrompu et un une fonction dédiée au traitement de l'interruption est exécuté. On utilise la fonction
attachInterrupt()
pour spécifier la fonction à de traitement à exécuter et le type d'évènement à surveiller.
Se documenter sur la fonction
attachInterrupt()
Modifier le programme pour prendre en compte tous les événements sur la broche D2
int buttonInterrupt = 0; // Interrupt 0 est sur la broche 2
int ledPin = 4; // Sortie vers la LED
volatile int state = LOW; // Etat enregistré
void setup()
{
// La pin 4 est configure en sortie
pinMode(ledPin, OUTPUT);
//on déclenche une interruption pour chaque variation sur la broche 2
attachInterrupt(buttonInterrupt, Change_etat, CHANGE);
}
void loop()
{
//On simule une tache complexe consommatrice en temps.
for (int i = 0; i < 100; i++)
{
delay(10); // on attend...
}
}
void Change_etat()
{
state= !state;
digitalWrite(ledPin, state);
}
Modifier le programme pour compter le nombre de fois ou l'appui sur le bouton.
Faire afficher le résultat dans un terminal.
