Hogyan kell használni a KY-040 Rotary kódolót Arduino-val

How to Use the KY-040 Rotary Encoder with Arduino

A KY-040 forgó kódoló egy mechanikus eszköz, amelyet a szög helyzet vagy a forgás mérésére használnak. Általában a kötetvezérlőkben, a menü navigációjában és a robotika helyzetkövetésében használják. Ez az oktatóanyag vezeti a KY-040 Rotary kódoló csatlakoztatását és használatát az Arduino-val.


Mire lesz szüksége

  1. KY-040 Rotary kódoló modul
  2. Arduino Board (például Uno, Mega, Nano)
  3. Kenyérlemez és jumper vezetékek
  4. Egy számítógép, amelyen az Arduino IDE telepített

1. lépés: A KY-040 forgó kódoló megértése

A KY-040 kódoló egy forgó tárcsából áll, amely impulzusokat generál, amikor elforgatják. Ez magában foglalja a beépített nyomógombot is.

KY-040 Pinout

Csap Funkció
GND Föld
+ Tápegység (5V)
Loghinta Óraimpulzusjel
DT Adatimpulzusjel
SW Nyomógomb jel

2. lépés: A KY-040 vezetékesítése Arduino-ra

Így csatlakoztathatja a KY-040-et egy Arduino Uno-hoz:

KY-040 PIN Arduino Pin
GND GND
+ 5 V -os
Loghinta 2. érintkező
DT 3. érintkező
SW 4. érintkező

3. lépés: Töltse fel a kódot

A következő példakód a forgó kódoló forgását olvassa el, és a gombnyomásokat észlel:

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

4. lépés: Tesztelje a beállítást

  1. Csatlakoztassa az Arduino -t a számítógépéhez USB -n keresztül.
  2. Nyissa meg az Arduino IDE -t, és válassza ki a megfelelőt Bizottság és Kikötő a Szerszámok menü.
  3. Töltse fel a kódot kattintással Feltöltés.
  4. Nyissa meg a soros monitort (Szerszámok > Soros monitor) és állítsa be az adatátviteli sebességet 9600.
  5. Forgassa el a kódolót, és nyomja meg a gombot. Vegye figyelembe a számlálót és a gombnyomású üzeneteket a soros monitorban.

A KY-040 Rotary kódoló alkalmazásai

  1. Hangerő- vagy fényerő -szabályozás
  2. Menü navigáció
  3. Motorhelyzet -követés
  4. Robotika és automatizálási rendszerek

Hibaelhárítás

  • Nincs forgás észlelése: Ellenőrizze a CLK és a DT vezetékeket, és győződjön meg arról, hogy a csapok megfelelnek a kódnak.
  • Instabil olvasmányok: Adjon hozzá egy kis debound késleltetést a kódoló jelek stabilizálásához.
  • A gombot nem észlelték: Ellenőrizze, hogy az SW tű megfelelően csatlakozik -e és használja INPUT_PULLUP mód.

Következtetés

Sikeresen összekapcsolja a KY-040 Rotary kódolót az Arduino-val. Ez a sokoldalú modul lehetővé teszi a forgáskövetés és a gomb funkcionalitásának hozzáadását a projektekhez. Kísérletezzen vele különböző alkalmazásokban, például egyéni vezérlők felépítését vagy a menük navigálását a rendszerekben!

Hagyj egy megjegyzést

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.