Note
Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l’univers des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.
Pourquoi rejoindre ?
Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.
Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.
Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.
Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.
Promotions festives et cadeaux : Participez à des cadeaux et des promotions de vacances.
👉 Prêt à explorer et à créer avec nous ? Cliquez [ ici ] et rejoignez-nous aujourd’hui !
5.13 Interruption¶
Si vous utilisez des delay() dans un projet utilisant des capteurs, vous pourriez constater que lors du déclenchement de ces capteurs, le programme peut ne pas réagir.
Cela est dû au fait que l’instruction delay provoque la suspension du programme, et celui-ci ne pourra pas obtenir le signal envoyé par le capteur à la carte de contrôle principale.
Dans ce cas, on peut utiliser l’interruption. L’interruption permet au programme de ne pas manquer une impulsion.
Dans ce chapitre, nous utilisons un buzzer actif et des boutons pour expérimenter le processus d’utilisation de l’interruption.
Dans la fonction loop(), delay(1000) est utilisé pour compter les secondes.
Placez le bouton pour contrôler le buzzer dans l’ISR, afin qu’il ne soit pas perturbé par le delay et qu’il puisse accomplir la tâche en douceur.
Note
Les ISR sont des types spéciaux de fonctions qui ont certaines limitations uniques que la plupart des autres fonctions n’ont pas. Une ISR ne peut pas avoir de paramètres, et elles ne devraient rien retourner. Généralement, une ISR doit être aussi courte et rapide que possible. Si votre croquis utilise plusieurs ISR, une seule peut s’exécuter à la fois, les autres interruptions seront exécutées après la fin de la courante, dans un ordre qui dépend de la priorité qu’elles ont.
Composants requis
Pour ce projet, nous aurons besoin des composants suivants.
Il est certainement pratique d’acheter un kit complet, voici le lien :
Nom |
ÉLÉMENTS DE CE KIT |
LIEN |
|---|---|---|
3 in 1 Starter Kit |
380+ |
Vous pouvez également les acheter séparément via les liens ci-dessous.
INTRODUCTION DES COMPOSANTS |
LIEN D’ACHAT |
|---|---|
- |
Schéma
Câblage
Code
Note
Ouvrez le fichier
5.13.interrupt.inositué dans le dossier3in1-kit\basic_project\5.13.interrupt.Ou copiez ce code dans Arduino IDE.
Ou téléversez le code via l”Éditeur Web Arduino.
Après le téléversement réussi du code, activez le moniteur série et vous verrez un nombre s’incrémentant automatiquement s’afficher chaque seconde. Si vous appuyez sur le bouton, le buzzer émettra un son. La fonction du buzzer contrôlée par le bouton et la fonction de temporisation ne sont pas en conflit l’une avec l’autre.
Comment ça fonctionne ?
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode): Ajouter une interruption.- Syntaxe
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)
- Paramètres
pin: le numéro de pin Arduino. Vous devriez utiliserdigitalPinToInterrupt(pin)pour convertir le pin numérique réel en un numéro d’interruption spécifique. Par exemple, si vous vous connectez au pin 3, utilisez sondigitalPinToInterrupt(3)comme premier paramètre.ISR: l’ISR à appeler lorsque l’interruption se produit ; cette fonction ne doit prendre aucun paramètre et ne rien retourner. Cette fonction est parfois appelée routine de service d’interruption.mode: définit quand l’interruption doit être déclenchée. Quatre constantes sont prédéfinies comme valeurs valides :LOWpour déclencher l’interruption lorsque le pin est bas,CHANGEpour déclencher l’interruption chaque fois que la valeur du pin change.RISINGpour déclencher lorsque le pin passe de bas à haut.FALLINGpour quand le pin passe de haut à bas.
Note
Différentes cartes de contrôle principales peuvent utiliser les pins d’interruption différemment. Sur la carte R3, seuls les pins 2 et 3 peuvent utiliser l’interruption.