Contar pulsos de un encoder
Cuente flancos rápidos sin perder ninguno.
Contar pulsos de un encoder es una lección gratuita de Arduino & IoT Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Arduino & IoT Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Arduino & IoT Academy incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
A Wheel of Pulses
A rotary encoder sends a quick stream of electrical pulses as it spins. Count those pulses and you know how far it has turned.
Too Fast to Poll
Spin an encoder quickly and pulses fly by in microseconds. A normal loop reading the pin would miss many of them.
Interrupts to the Rescue
This is the perfect job for an interrupt. The hardware catches every edge for you, so no pulse slips through unnoticed. ⚡
A Volatile Counter
Make a volatile counter the ISR can increment. Marking it volatile keeps the loop reading the true, up-to-date total.
volatile long pulseCount = 0;Attach the Interrupt
In setup, point attachInterrupt at the encoder pin and fire on RISING so each pulse calls your counting handler.
attachInterrupt(digitalPinToInterrupt(2), countPulse, RISING);A Tiny ISR
The whole handler does one thing: add one to the counter. Short and fast, exactly as a good ISR should be.
void countPulse() {
pulseCount++;
}Read Without Tearing
To copy the count in the loop, briefly pause interrupts so the ISR cannot change it mid-read and leave you a torn value.
noInterrupts();
long c = pulseCount;
interrupts();Use the Count
Now the loop can print the total, compute speed, or react, all while the ISR keeps tallying new pulses in the background.
Serial.println(c);From Pulses to Rotation
Each encoder has a fixed pulses-per-turn. Divide your count by that number to learn how many full revolutions happened.
Measuring Speed
Count pulses over a known time window in the loop, and you can turn that rate into speed or RPM for a motor or wheel.
Reset When Needed
To start a fresh measurement, set the counter back to zero, again pausing interrupts so you do not lose a pulse arriving at that instant.
noInterrupts();
pulseCount = 0;
interrupts();Quick Check
Why do we briefly pause interrupts when reading the pulse counter in the loop?
Recap
You built a pulse counter: a volatile total, a tiny ISR, and safe reads in the loop. Now you can measure rotation and speed reliably. 🎉
Preguntas frecuentes
¿La lección «Contar pulsos de un encoder» es gratis?
Sí — el texto completo de «Contar pulsos de un encoder» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Arduino & IoT Academy, actualiza a CoddyKit PRO. El curso de Arduino & IoT Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Contar pulsos de un encoder»?
Cuente flancos rápidos sin perder ninguno. Practicas Arduino & IoT Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Arduino & IoT Academy?
No se requiere experiencia previa. Arduino & IoT Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Contar pulsos de un encoder»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Arduino & IoT Academy?
Sí. Cada lección de Arduino & IoT Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Sondeo frente a interrupciones
- attachInterrupt en un pin
- Escribir una ISR segura
- Contar pulsos de un encoder