Arduino ile KY-040 döner kodlayıcı nasıl kullanılır

How to Use the KY-040 Rotary Encoder with Arduino

KY-040 döner kodlayıcı, açısal pozisyonu veya dönüşü ölçmek için kullanılan mekanik bir cihazdır. Hacim kontrollerinde, menü navigasyonunda ve robotikte konum izlemesinde yaygın olarak kullanılır. Bu öğretici, KY-040 Rotary Encoder'ı Arduino ile bağlayarak ve kullanarak size rehberlik edecektir.


Ne İhtiyacınız Olacak

  1. KY-040 Döner Kodlayıcı Modülü
  2. Arduino Kurulu (örn. UNO, Mega, Nano)
  3. Breadboard ve jumper telleri
  4. Arduino IDE kurulu bir bilgisayar

1. Adım: KY-040 döner kodlayıcıyı anlamak

KY-040 kodlayıcı, döndürüldüğünde darbeler üreten bir döner kadrandan oluşur. Ayrıca yerleşik bir itme düğmesi içerir.

KY-040 Pinout

Pin İşlev
Gnd Zemin
+ Güç kaynağı (5V)
Clk Saat darbe sinyali
DT Veri nabız sinyali
Sw Push Düğme Sinyali

2. Adım: KY-040'ın Arduino'ya bağlanması

KY-040'ı bir Arduino Uno'ya nasıl bağlayacağınız aşağıda açıklanmıştır:

KY-040 PIN Arduino pimi
Gnd Gnd
+ 5V
Clk Pim 2
DT Pim 3
Sw Pim 4

Adım 3: Kodu yükleyin

Aşağıdaki örnek kod, döner kodlayıcının dönüşünü okur ve düğme baskılarını algılar:

#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. Adım: Kurulumu test edin

  1. Arduino'yu USB üzerinden bilgisayarınıza bağlayın.
  2. Arduino IDE'yi açın ve doğru seçin Pano Ve Liman altında Aletler menü.
  3. Kodu tıklayarak yükleyin Yüklemek.
  4. Seri monitörü açın (Aletler > Seri monitör) ve baud hızını ayarlayın 9600.
  5. Kodlayıcıyı döndürün ve düğmeye basın. Seri monitördeki sayaç ve düğmeye basın mesajları gözlemleyin.

KY-040 Rotary Encoder uygulamaları

  1. Hacim veya parlaklık kontrolü
  2. Menü Gezinme
  3. Motor pozisyon izleme
  4. Robotik ve Otomasyon Sistemleri

Sorun giderme

  • Rotasyon Tespiti Yok: CLK ve DT kablolarını kontrol edin ve pimlerin kodla eşleştiğinden emin olun.
  • Kararsız okumalar: Enkoder sinyallerini stabilize etmek için küçük bir debounce gecikmesi ekleyin.
  • Düğme Tespit edilmedi: SW piminin düzgün bağlandığını ve kullandığını doğrulayın INPUT_PULLUP mod.

Çözüm

KY-040 döner kodlayıcıyı Arduino ile başarıyla arayüz ettiniz. Bu çok yönlü modül, projelerinize rotasyon izleme ve düğme işlevselliği eklemenizi sağlar. Sistemlerinizde özel kontroller oluşturmak veya menüleri gezmek gibi farklı uygulamalarda deneyin!

Yorum bırak

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.