Arduino & IoT Academy · Leçon

Compter les impulsions d’un encodeur

Comptez les fronts rapides sans en manquer un seul.

Leçon 4 sur 413 étapes

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. 🎉

Gratuit pour commencer

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

  1. Scrutation ou interruptions
  2. attachInterrupt sur une broche
  3. Écrire une ISR sûre
  4. Compter les impulsions d’un encodeur
← Retour à Arduino & IoT Academy