ESP8266 - Drehencoder
Dieses Tutorial erklärt dir, wie man den inkrementalen Drehencoder mit dem ESP8266 verwendet. Folgendes werden wir behandeln:
- Wie der Drehencoder funktioniert
- Der Unterschied zwischen einem Drehencoder und einem Potentiometer (eine andere Art von Drehknopf)
- Wie man den Drehencoder physisch mit dem ESP8266 verbindet
- Wie man Code für den ESP8266 schreibt, um die Drehrichtung und Position vom Drehencoder auszulesen
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über Drehencoder
Ein Drehencoder ist eine Art Knopf, der Drehbewegungen in ein elektrisches Signal umwandeln kann. Es zeigt dir, wie stark sich etwas gedreht hat und an welcher Position es sich befindet. Es gibt zwei Haupttypen:
- Inkrementalencoder: Dieser Typ verwendet schnelle Signale, um zu messen, wie weit sich etwas bewegt hat.
- Absolutencoder: Diese Art liefert für jede Position einen speziellen Code, der dabei hilft, genau zu wissen, wo sich etwas befindet, selbst wenn die Stromversorgung ausfällt.
Dieses Tutorial konzentriert sich auf den inkrementellen Encoder.
Pinbelegung des Drehencoder-Moduls

Ein Drehencoder-Modul hat vier Pins:
- CLK-Pin (Ausgang A): ist der Hauptimpuls, der angibt, wie viel Rotation stattgefunden hat. Wenn Sie den Drehknopf um eine Rastung (Klick) in eine Richtung drehen, liefert der CLK-Pin ein Signal aus, das einen vollständigen Zyklus durchläuft (LOW → HIGH → LOW).
- DT-Pin (Ausgang B): verhält sich wie der CLK-Pin, liefert jedoch ein Signal, das dem CLK-Signal um 90 Grad hinterherhinkt. Es hilft uns dabei, die Drehrichtung (im Uhrzeigersinn oder gegen den Uhrzeigersinn) zu bestimmen.
- SW-Pin: ist der Ausgang des im Encoder integrierten Druckknopfs. Er ist normalerweise offen. Wenn wir an diesem Pin einen Pull-up-Widerstand verwenden, ist der SW-Pin HIGH, wenn der Druckknopf nicht gedrückt ist, und LOW, wenn er gedrückt wird.
- VCC-Pin (+): muss mit VCC verbunden werden (zwischen 3,3 und 5 Volt).
- GND-Pin: muss mit GND (0 V) verbunden werden.
Drehencoder vs Potentiometer
Sie könnten den Drehencoder mit dem Potentiometer verwechseln. Aber es sind unterschiedliche Bauteile. Hier ist ein Vergleich zwischen ihnen:
- Der Drehencoder ist wie die moderne Version eines Potentiometers, aber er kann mehr Dinge tun.
- Der Drehencoder kann sich eine volle Umdrehung drehen, ohne anzuhalten, während ein Potentiometer nur etwa drei Viertel des Kreises drehen kann.
- Der Drehencoder erzeugt Impulse, während ein Potentiometer die analoge Spannung ausgibt.
- Der Drehencoder ist praktisch, wenn man einfach herausfinden muss, wie weit der Drehknopf gedreht wurde, und nicht genau, wo er sich befindet. Das Potentiometer ist nützlich, wenn man wirklich genau wissen muss, wo sich ein Drehknopf befindet.
Wie ein Drehencoder funktioniert

Im Encoder befindet sich eine Scheibe mit Schlitzen, die mit einem Pin namens C verbunden ist, der wie eine gemeinsame Masse dient. Es gibt noch zwei weitere Pins, A und B.
- Wenn du den Drehknopf drehst, berühren Pin A und Pin B den gemeinsamen Erdungspunkt C, jedoch in einer bestimmten Reihenfolge, abhängig davon, in welche Richtung du den Drehknopf drehst (im Uhrzeigersinn oder gegen den Uhrzeigersinn).
- Diese Berührungen erzeugen zwei Signale. Sie unterscheiden sich im Timing leicht, weil einer der Pins den Erdungspunkt vor dem anderen berührt. Die beiden Signale sind um 90 Grad zueinander phasenverschoben. Dies wird Quadraturkodierung genannt.
- Wenn du den Drehknopf im Uhrzeigersinn drehst, berührt Pin A den Erdungspunkt vor Pin B. Wenn du den Drehknopf gegen den Uhrzeigersinn drehst, berührt Pin B den Erdungspunkt vor Pin A.
- Indem wir überwachen, wann jeder Pin den Erdungspunkt berührt oder verlässt, können wir feststellen, in welche Richtung der Drehknopf sich dreht. Wir tun dies, indem wir prüfen, was mit Pin B passiert, wenn Pin A sich ändert.

Wenn A den Zustand von LOW auf HIGH ändert:
- Wenn B LOW ist, wird der Drehknopf im Uhrzeigersinn gedreht.
- Wenn B HIGH ist, wird der Drehknopf gegen den Uhrzeigersinn gedreht.
※ Notiz:
Pin A und Pin B sind mit den CLK- und DT-Pins verbunden. Je nach Hersteller kann die Reihenfolge jedoch unterschiedlich sein. Die unten angegebenen Codes wurden mit dem Drehencoder von DIYables getestet.
Wie man einen Drehencoder programmiert
- Prüfe das Signal vom CLK-Pin
- Wenn sich der Zustand vom LOW-Zustand zum HIGH-Zustand ändert, prüfe den Zustand des DT-Pins.
- Wenn der Zustand des DT-Pins HIGH ist, wird der Drehknopf gegen den Uhrzeigersinn gedreht, der Zähler wird um 1 erhöht
- Wenn der Zustand des DT-Pins LOW ist, wird der Drehknopf im Uhrzeigersinn gedreht, der Zähler wird um 1 verringert
Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.
ESP8266-Code – Drehencoder
Der untenstehende ESP8266-Code führt Folgendes aus:
- Erfasst die Richtung und das Ausmaß der Drehung des Encoders.
- Wenn festgestellt wird, dass der Drehknopf um eine Rastung (Klick) im Uhrzeigersinn gedreht wird, erhöhe den Zähler um eins.
- Wenn festgestellt wird, dass der Drehknopf um eine Rastung (Klick) gegen den Uhrzeigersinn gedreht wird, senke den Zähler um eins.
- Erfasst, ob die Taste gedrückt wird.
Um den Code für das Entprellen von Tasten zu vereinfachen, wird die ezButton-Bibliothek verwendet.
Schnelle Schritte
Um mit ESP8266 in der Arduino-IDE zu beginnen, befolgen Sie diese Schritte:
- Schauen Sie sich das Wie man die Umgebung für ESP8266 in der Arduino IDE einrichtet Tutorial an, wenn dies Ihr erster Einsatz von ESP8266 ist.
- Verbinden Sie die Komponenten wie in der Abbildung gezeigt.
- Verbinden Sie das ESP8266-Board mit Ihrem Computer über ein USB-Kabel.
- Öffnen Sie die Arduino-IDE auf Ihrem Computer.
- Wählen Sie das richtige ESP8266-Board, z. B. NodeMCU 1.0 (ESP-12E-Modul), und seinen jeweiligen COM-Port.
- Installieren Sie die ezButton-Bibliothek in der Arduino-IDE. Siehe So installieren Sie die Bibliothek
- Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino-IDE.
- Klicken Sie in der Arduino-IDE auf die Upload-Schaltfläche, um den Code auf den ESP8266 hochzuladen.
- Drehen Sie den Drehknopf im Uhrzeigersinn und anschließend gegen den Uhrzeigersinn.
- Drücken Sie den Knopf.
- Überprüfen Sie das Ergebnis im Serial Monitor.
Code-Erklärung
Schau dir die Zeilenkommentare im Code an.
ESP8266 Code – Drehencoder mit Interrupt
Im vorherigen Code kann wiederholtes Abfragen des Pinstatus mittels Polling Ressourcen verschwenden und möglicherweise nicht korrekt zählen, wenn andere Aufgaben viel Zeit in Anspruch nehmen. Interrupts bieten eine Lösung, indem sie kontinuierliche Abfragen vermeiden und dem ESP8266 ermöglichen, verschiedene Aufgaben auszuführen, ohne Ereignisse zu verpassen.
Hier ist ein ESP8266-Beispiel, wie man einen Drehencoder mit Interrupts ausliest.
Nun, während du den Knopf drehst, wirst du bemerken, dass Informationen im Serial Monitor erscheinen, ähnlich dem, was du im früheren Code gesehen hast.
※ Notiz:
- Sie könnten auf Tutorials anderer Websites stoßen, die zwei Interrupts für einen einzelnen Encoder verwenden, aber das ist unnötig und verschwenderisch. Nur ein Interrupt reicht aus.
- Es ist wichtig, das Schlüsselwort volatile für globale Variablen zu verwenden, die im Interrupt verwendet werden. Die Vernachlässigung dieses Aspekts könnte zu unerwarteten Problemen führen.
- Halten Sie den Code im Interrupt so einfach wie möglich. Vermeiden Sie die Verwendung von Serial.print() oder Serial.println() innerhalb des Interrupts.
ESP8266 Drehencoder-Anwendung
Mit einem Drehencoder können wir die folgenden Anwendungen durchführen, aber nicht darauf beschränkt:
- ESP8266 - Drehencoder steuert die Position des Servo-Motors
- ESP8266 - Drehencoder steuert die Helligkeit der LED
- ESP8266 - Drehencoder steuert die Geschwindigkeit des Schrittmotors
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.