Table des matières:
- Étape 1: Gestionnaire d'interruption
- Étape 2: Définir l'intervalle de temps périodique
- Étape 3: initialisation de l'interruption
- Étape 4: Où ajouter votre code
Vidéo: Arduino - Interruption périodique : 4 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Ce Instructable concerne l'utilisation d'une interruption périodique pour la synchronisation dans les programmes Arduino. C'est une étape pour un programmeur Arduino en herbe qui sait que l'Arduino peut faire plus, mais ne sait pas vraiment comment y parvenir.
S'il y a un problème de performances, je suppose que vous utilisez une ou plusieurs fonctions delay(). L'astuce consiste à se débarrasser de la ou des fonctions delay() et à substituer une interruption. La fonction delay() force l'Arduino à ne rien faire en attendant que le delay() se termine. L'utilisation d'une interruption permet à votre programme de faire d'autres choses en attendant la fin du délai. Il y a généralement une énorme quantité de temps mort inutilisé qui pourrait être utilisé pour d'autres choses lors de l'utilisation de delay(). L'utilisation d'une interruption résout ce problème.
Étape 1: Gestionnaire d'interruption
1. Ajoutez le gestionnaire d'interruption à votre programme. Copiez et collez simplement quelque part au-dessus de setup();
const unsigned long TIMER0_COUNT = 500; // Intervalle de minuterie de 500 ms
// Gestionnaire d'interruption TIMER0 volatile bool time = false; ISR(TIMER0_COMPA_vect) { nombre long statique non signé = 0; if (++count > TIMER0_COUNT) { count = 0; temps = vrai; // l'heure est définie sur true chaque TIMER0_COUNT ms } // (l'heure doit être effacée dans la routine principale) }
Étape 2: Définir l'intervalle de temps périodique
2. Définissez l'intervalle de temps. Cette routine se superpose à l'interruption TIMER0, qui est définie pour se déclencher toutes les ~1 ms.
Votre "intervalle" est le nombre d'interruptions TIMER0 à traiter. Chaque intervalle est d'environ 1 ms, vous définissez donc réellement le nombre d'interruptions TIMER0 à compter avant d'activer votre intervalle. IOW, définissez la variable TIMER0_COUNT sur le nombre de millisecondes que vous souhaitez attendre. Par exemple, utilisez 500 pendant une demi-seconde. Utilisez 3000 pendant 3 secondes.
Étape 3: initialisation de l'interruption
3. Ajoutez le code "TIMER0 initialization" à votre méthode setup(). Encore une fois, copiez et collez simplement dans setup().
// *** initialisation TIMER0 ***
cli(); // désactiver toutes les interruptions TIMSK0 = 0; // désactiver timer0 pour une gigue inférieure OCR0A = 0xBB; // nombre d'interruptions arbitraires TIMSK0 |= _BV(OCIE0A); // se raccroche à l'interruption sei(); // réactive les interruptions
Étape 4: Où ajouter votre code
4. Ajoutez le code "time check" à votre méthode loop(). Copiez et collez en boucle().
si (heure) {
heure = faux; // faire quelque chose ici }
Le "temps = faux;" la ligne est importante. Sans cette ligne, la ou les lignes "faire quelque chose ici" seraient exécutées à chaque fois que le programme exécute loop().
Bien sûr, vous substituez vos propres activités dans la ligne "faites quelque chose ici". Commencez par imprimer du texte ou faire clignoter la LED.
Vous avez terminé!
Conseillé:
Système d'alerte de stationnement en marche arrière Arduino - Étapes par étape : 4 étapes
Système d'alerte de stationnement en marche arrière Arduino | Étapes par étape : dans ce projet, je vais concevoir un circuit de capteur de stationnement inversé pour voiture Arduino simple à l'aide d'un capteur à ultrasons Arduino UNO et HC-SR04. Ce système d'alerte de marche arrière basé sur Arduino peut être utilisé pour une navigation autonome, une télémétrie de robot et d'autres r
Rapport périodique Excel : 6 étapes
Rapport périodique Excel : Voici mes conseils pour les rapports de consommation périodiques dans Excel 2010. Dans la vidéo tutoriel ci-dessous, ce rapport nous indique la consommation spécifique d'électricité, d'eau, d'oxygène, d'azote par tonne de produits finis, selon les semaines, les mois, les trimestres
Arduino Halloween Edition - Écran pop-out Zombies (étapes avec images) : 6 étapes
Arduino Halloween Edition - Écran pop-out Zombies (étapes avec images): Vous voulez effrayer vos amis et faire du bruit à Halloween? Ou vous voulez juste faire une bonne farce ? Cet écran pop-out Zombies peut le faire ! Dans ce Instructable, je vais vous apprendre à créer facilement des zombies sautés à l'aide d'Arduino. Le HC-SR0
Arduino Uno Fish Feeder en 6 étapes économiques et faciles ! : 6 étapes
Arduino Uno Fish Feeder en 6 étapes faciles et bon marché ! : Un peu d'histoire peut donc être nécessaire pour ce projet. Les personnes ayant des poissons de compagnie ont probablement été confrontées au même problème que moi : les vacances et l'oubli. J'oubliais constamment de nourrir mon poisson et je me débrouillais toujours pour le faire avant qu'il n'aille à s
Tableau périodique LED interactif : 12 étapes (avec images)
Tableau périodique LED interactif : Ma petite amie et moi avons une collection d'éléments - des échantillons des morceaux uniques de matière qui composent tout dans l'univers ! Pour une collection aussi intéressante, j'ai décidé de construire une vitrine qui montre les échantillons dans tout leur monde-buildin