Période 3 : Acquisition de grandeurs physiques

Les interruptions - Comptage d'événements

DéfinitionQu'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éthodeMise 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éthodeProgrammer 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.

Comptage d'impulsions par interruption
PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimerRéalisé avec Scenari (nouvelle fenêtre)