So verwenden Sie den KY-040 Rotary Encoder mit Arduino

How to Use the KY-040 Rotary Encoder with Arduino

Der KY-040-Rotary-Encoder ist ein mechanisches Gerät, das zur Messung der Winkelposition oder Drehung verwendet wird. Es wird üblicherweise in Volumensteuerungen, Menünavigation und Positionsverfolgung in Robotik verwendet. In diesem Tutorial führen Sie die Verbindung und verwenden Sie den KY-040-Rotary-Encoder mit Arduino.


Was Sie brauchen werden

  1. KY-040 Rotary Encoder-Modul
  2. Arduino Board (z. B. Uno, Mega, Nano)
  3. Breadboard- und Jumper -Drähte
  4. Ein Computer mit der Arduino -IDE installiert

Schritt 1: Verständnis des KY-040 Rotary Encoders

Der KY-040-Encoder besteht aus einem Drehschalter, das beim Drehen von Impulsen erzeugt. Es enthält auch einen integrierten Druckknopf.

KY-040 Pinout

Stift Funktion
GND Boden
+ Stromversorgung (5 V)
Clk Taktpulssignal
Dt Datenimpulssignal
SW Druckknopfsignal

Schritt 2: Verkabelung des KY-040 mit Arduino

So verbinden Sie den KY-040 mit einem Arduino Uno:

KY-040 Pin Arduino Pin
GND GND
+ 5v
Clk Pin 2
Dt Pin 3
SW Pin 4

Schritt 3: Laden Sie den Code hoch hoch

Der folgende Beispielcode liest die Drehung des Rotary Encoders und erkennt die Taste der Taste:

#define CLK 2  // Clock pin
#define DT 3   // Data pin
#define SW 4   // Switch pin

int counter = 0;     // Counter to track rotation
int currentStateCLK;
int lastStateCLK;

void setup() {
  pinMode(CLK, INPUT);
  pinMode(DT, INPUT);
  pinMode(SW, INPUT_PULLUP); // Internal pull-up for the button

  Serial.begin(9600);

  // Read the initial state of the CLK pin
  lastStateCLK = digitalRead(CLK);

  Serial.println("KY-040 Rotary Encoder Test");
}

void loop() {
  // Read the current state of the CLK pin
  currentStateCLK = digitalRead(CLK);

  // If the state has changed, the encoder has rotated
  if (currentStateCLK != lastStateCLK) {
    // Check the DT pin to determine the rotation direction
    if (digitalRead(DT) != currentStateCLK) {
      counter++;
    } else {
      counter--;
    }

    Serial.print("Counter: ");
    Serial.println(counter);
  }

  // Save the last state of CLK
  lastStateCLK = currentStateCLK;

  // Check if the button is pressed
  if (digitalRead(SW) == LOW) {
    Serial.println("Button pressed!");
    delay(200); // Debounce delay
  }
}

Schritt 4: Testen Sie das Setup

  1. Schließen Sie den Arduino über USB an Ihren Computer an.
  2. Öffnen Sie die Arduino -IDE und wählen Sie die richtige Auswahl Planke Und Hafen unter dem Werkzeuge Speisekarte.
  3. Laden Sie den Code durch Klicken hoch Hochladen.
  4. Öffnen Sie den Serienmonitor (Werkzeuge > Serienmonitor) und den Baudrate auf festlegen 9600.
  5. Drehen Sie den Encoder und drücken Sie die Taste. Beobachten Sie den Zähler und die Taste drücken Sie Nachrichten im seriellen Monitor.

Anwendungen des KY-040 Rotary Encoders

  1. Lautstärke- oder Helligkeitskontrolle
  2. Menünavigation
  3. Motorpositionsverfolgung
  4. Robotik- und Automatisierungssysteme

Fehlerbehebung

  • Keine Rotationserkennung: Überprüfen Sie die CLK- und DT -Verkabelung und stellen Sie sicher, dass die Pins mit dem Code übereinstimmen.
  • Instabile Lesungen: Fügen Sie eine kleine Entlassung zu Verzögerung hinzu, um die Encoder -Signale zu stabilisieren.
  • Taste nicht erkannt: Überprüfen Sie, ob der SW -Pin ordnungsgemäß verbunden ist und verwendet INPUT_PULLUP Modus.

Abschluss

Sie haben den KY-040-Rotary-Encoder mit Arduino erfolgreich miteinander verbunden. Mit diesem vielseitigen Modul können Sie Ihren Projekten Rotationsverfolgung und Schaltflächenfunktionen hinzufügen. Experimentieren Sie damit in verschiedenen Anwendungen, z. B. in Ihren Systemen zu bauen oder Menüs zu navigieren!

Hinterlasse einen Kommentar

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.