Hoe de KY-040 Rotary Encoder te gebruiken met Arduino

How to Use the KY-040 Rotary Encoder with Arduino

De KY-040 roterende encoder is een mechanisch apparaat dat wordt gebruikt om de hoekpositie of rotatie te meten. Het wordt vaak gebruikt in volumebesturing, menusavigatie en positie volgen in robotica. Deze zelfstudie leidt u door het verbinden en gebruiken van de KY-040 Rotary Encoder met Arduino.


Wat u nodig hebt

  1. KY-040 roterende encodermodule
  2. Arduino Board (bijv. UNO, Mega, Nano)
  3. Breadboard en jumper draden
  4. Een computer met de Arduino Ide geïnstalleerd

Stap 1: Inzicht in de KY-040 Rotary Encoder

De KY-040-encoder bestaat uit een roterende wijzerplaat die pulsen genereert wanneer het is gedraaid. Het bevat ook een ingebouwde drukknop.

KY-040 pinout

Pin Functie
GND Grond
+ Voeding (5V)
Kletsen Klokpulssignaal
DT Data -pulsignaal
SW Druk op knopsignaal

Stap 2: Ky-040 bedraden aan Arduino

Hier leest u hoe u de KY-040 verbindt met een Arduino Uno:

KY-040-pin Arduino Pin
GND GND
+ 5V
Kletsen Pin 2
DT Pin 3
SW Pin 4

Stap 3: Upload de code

De volgende voorbeeldcode leest de rotatie van de roterende encoder en detecteert de knop op de knop:

#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
  }
}

Stap 4: Test de instelling

  1. Sluit de Arduino via USB aan op uw computer.
  2. Open de Arduino IDE en selecteer de juiste Bord En Haven onder de Hulpmiddelen menu.
  3. Upload de code door te klikken Uploaden.
  4. Open de seriële monitor (Hulpmiddelen > Serie -monitor) en stel het baudrates in op 9600.
  5. Draai de encoder en druk op de knop. Bekijk de teller en de knop op berichten in de seriële monitor.

Toepassingen van de KY-040 Rotary Encoder

  1. Volume of helderheidsregeling
  2. Menu -navigatie
  3. Motorpositie tracking
  4. Robotica- en automatiseringssystemen

Problemen oplossen

  • Geen rotatiedetectie: Controleer de CLK- en DT -bedrading en zorg ervoor dat de pennen overeenkomen met de code.
  • Onstabiele lezingen: Voeg een kleine debounce -vertraging toe om de coderingssignalen te stabiliseren.
  • Knop niet gedetecteerd: Controleer of de SW -pin correct is aangesloten en gebruikt INPUT_PULLUP modus.

Conclusie

Je hebt met succes de KY-040 Rotary Encoder met Arduino gekoppeld. Met deze veelzijdige module kunt u rotatie -tracking- en knopfunctionaliteit toevoegen aan uw projecten. Experimenteer ermee in verschillende toepassingen, zoals het bouwen van aangepaste bedieningselementen of het navigeren van menu's in uw systemen!

Laat een reactie achter

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.