Arduino & IoT Academy · Lektion

Impulse eines Encoders zählen

Zählen Sie schnelle Flanken, ohne eine zu verpassen.

Lektion 4 von 413 Schritte

Impulse eines Encoders zählen ist eine kostenlose Arduino & IoT Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Arduino & IoT Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Arduino & IoT Academy-Kurs umfasst insgesamt 4 Lektionen.

Ein Rad voller Impulse

Ein Dreh-Encoder sendet beim Drehen eine schnelle Folge elektrischer Impulse. Wenn Sie diese Impulse zählen, wissen Sie, wie weit er gedreht wurde.

Zu schnell für Polling

Drehen Sie einen Encoder schnell, vergehen zwischen den Impulsen nur wenige Mikrosekunden. Eine normale loop, die den Pin ausliest, würde viele davon verpassen.

Interrupts helfen

Das ist die ideale Aufgabe für einen Interrupt. Die Hardware erfasst jede Flanke für Sie, sodass kein Impuls unbemerkt bleibt. ⚡

Ein Volatile-Zähler

Verwenden Sie einen volatile-Zähler, den die ISR erhöhen kann. Die Kennzeichnung als volatile sorgt dafür, dass die loop immer den aktuellen Gesamtwert liest.

volatile long pulseCount = 0;

Den Interrupt einrichten

Verweisen Sie in setup mit attachInterrupt auf den Encoder-Pin und lösen Sie den Interrupt bei RISING aus, damit jeder Impuls Ihren Zähl-Handler aufruft.

attachInterrupt(digitalPinToInterrupt(2), countPulse, RISING);

Eine winzige ISR

Der gesamte Handler hat nur eine Aufgabe: den Zähler um eins zu erhöhen. Kurz und schnell – genau so, wie eine gute ISR sein sollte.

void countPulse() {
  pulseCount++;
}

Ohne Zerreißen lesen

Um den Zählerstand in der loop zu kopieren, halten Sie Interrupts kurz an. So kann die ISR den Wert nicht während des Lesens ändern und einen inkonsistenten Wert hinterlassen.

noInterrupts();
long c = pulseCount;
interrupts();

Den Zähler verwenden

Jetzt kann die loop den Gesamtwert ausgeben, die Geschwindigkeit berechnen oder reagieren, während die ISR im Hintergrund weiterhin neue Impulse zählt.

Serial.println(c);

Von Impulsen zu Drehungen

Jeder Encoder hat eine festgelegte Anzahl von Impulsen pro Umdrehung. Teilen Sie Ihren Zählerstand durch diese Zahl, um die Anzahl vollständiger Umdrehungen zu ermitteln.

Geschwindigkeit messen

Zählen Sie die Impulse in der loop über ein bekanntes Zeitfenster. So können Sie aus dieser Rate die Geschwindigkeit oder die Drehzahl in RPM eines Motors oder Rads berechnen.

Bei Bedarf zurücksetzen

Um eine neue Messung zu starten, setzen Sie den Zähler wieder auf null. Halten Sie dabei erneut die Interrupts an, damit kein genau in diesem Moment eintreffender Impuls verloren geht.

noInterrupts();
pulseCount = 0;
interrupts();

Kurze Überprüfung

Warum halten wir Interrupts kurz an, wenn wir den Impulszähler in der loop lesen?

Zusammenfassung

Sie haben einen Impulszähler erstellt: einen volatile-Gesamtwert, eine winzige ISR und sichere Lesevorgänge in der loop. Jetzt können Sie Drehung und Geschwindigkeit zuverlässig messen. 🎉

Kostenlos starten

Lerne C++ mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „Impulse eines Encoders zählen“ kostenlos?

Ja — der vollständige Text von „Impulse eines Encoders zählen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Arduino & IoT Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Arduino & IoT Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Impulse eines Encoders zählen“?

Zählen Sie schnelle Flanken, ohne eine zu verpassen. Du übst Arduino & IoT Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Arduino & IoT Academy zu starten?

Keine Vorkenntnisse erforderlich. Arduino & IoT Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Impulse eines Encoders zählen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Arduino & IoT Academy-Lektion Code schreiben und ausführen?

Ja. Jede Arduino & IoT Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Polling vs. Interrupts
  2. attachInterrupt an einem Pin
  3. Eine sichere ISR schreiben
  4. Impulse eines Encoders zählen
← Zurück zu Arduino & IoT Academy