Compter les impulsions d’un encodeur
Comptez les fronts rapides sans en manquer un seul.
Compter les impulsions d’un encodeur est une leçon Arduino & IoT Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Arduino & IoT Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Arduino & IoT Academy comprend 4 leçons au total.
Une roue à impulsions
Un encodeur rotatif envoie rapidement une série d’impulsions électriques lorsqu’il tourne. Comptez ces impulsions pour savoir jusqu’où il a tourné.
Trop rapide pour l’interrogation périodique
Faites tourner rapidement un encodeur : les impulsions défilent en quelques microsecondes. Une boucle ordinaire qui lit la broche en manquerait beaucoup.
Les interruptions à la rescousse
C’est la tâche idéale pour une interruption. Le matériel détecte chaque front à votre place, de sorte qu’aucune impulsion ne passe inaperçue. ⚡
Un compteur volatile
Créez un compteur volatile que l’ISR pourra incrémenter. Le déclarer volatile garantit que la boucle lit le total réel et à jour.
volatile long pulseCount = 0;Attacher l’interruption
Dans setup, associez attachInterrupt à la broche de l’encodeur et déclenchez l’interruption sur RISING afin que chaque impulsion appelle votre gestionnaire de comptage.
attachInterrupt(digitalPinToInterrupt(2), countPulse, RISING);Une ISR minuscule
Le gestionnaire ne fait qu’une chose : ajouter un au compteur. Court et rapide, exactement comme doit l’être une bonne ISR.
void countPulse() {
pulseCount++;
}Lire sans incohérence
Pour copier le compteur dans la boucle, mettez brièvement les interruptions en pause afin que l’ISR ne puisse pas le modifier en cours de lecture et produire une valeur incohérente.
noInterrupts();
long c = pulseCount;
interrupts();Utiliser le compteur
La boucle peut maintenant afficher le total, calculer la vitesse ou réagir, tandis que l’ISR continue de comptabiliser les nouvelles impulsions en arrière-plan.
Serial.println(c);Des impulsions à la rotation
Chaque encodeur possède un nombre fixe d’impulsions par tour. Divisez votre compteur par ce nombre pour connaître le nombre de tours complets effectués.
Mesurer la vitesse
Comptez les impulsions pendant une durée connue dans la boucle, puis convertissez ce rythme en vitesse ou en RPM pour un moteur ou une roue.
Réinitialiser si nécessaire
Pour commencer une nouvelle mesure, remettez le compteur à zéro, en mettant de nouveau les interruptions en pause afin de ne pas perdre une impulsion arrivant à cet instant.
noInterrupts();
pulseCount = 0;
interrupts();Vérification rapide
Pourquoi met-on brièvement les interruptions en pause lors de la lecture du compteur d’impulsions dans la boucle ?
Récapitulatif
Vous avez créé un compteur d’impulsions : un total volatile, une ISR minuscule et des lectures sûres dans la boucle. Vous pouvez maintenant mesurer la rotation et la vitesse de manière fiable. 🎉
Apprends C++ avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 30
- Leçons
- 120
Questions Fréquemment Posées
La leçon « Compter les impulsions d’un encodeur » est-elle gratuite ?
Oui — le texte complet de « Compter les impulsions d’un encodeur » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Arduino & IoT Academy, passe à CoddyKit PRO. Le cours Arduino & IoT Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Compter les impulsions d’un encodeur » ?
Comptez les fronts rapides sans en manquer un seul. Tu pratiques Arduino & IoT Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Arduino & IoT Academy ?
Aucune expérience préalable n'est requise. Arduino & IoT Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Compter les impulsions d’un encodeur » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Arduino & IoT Academy ?
Oui. Chaque leçon Arduino & IoT Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Scrutation ou interruptions
- attachInterrupt sur une broche
- Écrire une ISR sûre
- Compter les impulsions d’un encodeur