ROBOTKODLA
ROBOTKODLA Genç Mucit

Eğlen, Kodla, Geleceği Tasarla

Model: KY-040 Sensör Modülü (Breakout) Başlangıç Seviye Üretici: Generic

KY-040 360 Derece Döner Optik Rotary Encoder Modülü

3D yazıcı menülerinde ve ses mikserlerinde kullanılan; sağa/sola sonsuz dönebilen ve üzerine basıldığında seçim butonu olan enkoderdir.

Önemli Güvenlik ve Teknik Sınırlama Bilgisi

Potansiyometre gibi bir başlangıç ve bitiş noktası yoktur; sonsuza kadar 360 derece sağa veya sola döndürülebilir. Miline basıldığında dahili buton anahtarı aktif olur.

Teknik Özellikler ve Elektriksel Parametreler

Çalışma Voltajı 3.30V - 5.00V Lojik Seviye Giriş/Çıkış
Akım Tüketimi 1 mA Tipik çalışma modu
Haberleşme Arayüzü Kuadratür Kare Dalga (CLK ve DT) + Dahili Buton (SW) Protokol türü
Ölçüm Aralığı Tur başına 20 adım (tık) Etkili çalışma sınırı
Hassasiyet / DoğrulukKuadratür faz farkı ile yön ayrımıÖlçüm sapma payı
Tepki SüresiAnlıkÖrnekleme hızı
Ölçüm TürüSonsuz 360° Döner Açı ve Yön SayımıFiziksel büyüklük
Pin Sayısı5 PinModül header pinleri

Pin Bağlantıları ve Görevleri (Pinout)

Pin #Pin AdıSinyal TürüGörev & Açıklama
1 CLK Çıkış Enkoder A sinyali (Kesme pini D2'ye)
2 DT Çıkış Enkoder B sinyali
3 SW Buton Miline basıldığında GND'ye çeker
4 + (VCC) Güç +3.3V veya +5V DC
5 GND Toprak Toprak 0V

Geliştirme Kartı Uyumluluk Durumu

Arduino Uno / Nano ✓ Uyumlu
5V Lojik

Doğrudan bağlantı ve yerleşik 5V desteği.

ESP32 (NodeMCU) ✓ Uyumlu
3.3V Lojik

3.3V ile tam uyumlu çalışır.

Raspberry Pi Pico ✓ Uyumlu
3.3V Lojik

MicroPython veya C/C++ SDK ile desteklenir.

BBC Micro:bit ✓ Uyumlu
3.3V Lojik

MakeCode blokları veya MicroPython ile uyumlu.

STM32 (BluePill) ✓ Uyumlu
3.3V (5V Tolerant)

5V tolerant GPIO pinleri doğrudan bağlanabilir.

Örnek Kaynak Kod Kütüphanesi

Arduino Uno Arduino C++ ✓ Test Edildi

KY-040 ile LCD Menü Gezinme ve Sayıcı

Gerekli Kütüphaneler: Standart
const int pinCLK = 2;
const int pinDT = 3;
const int pinSW = 4;

int counter = 0;
int currentStateCLK;
int lastStateCLK;

void setup() {
  Serial.begin(9600);
  pinMode(pinCLK, INPUT);
  pinMode(pinDT, INPUT);
  pinMode(pinSW, INPUT_PULLUP);
  lastStateCLK = digitalRead(pinCLK);
}

void loop() {
  currentStateCLK = digitalRead(pinCLK);

  if (currentStateCLK != lastStateCLK && currentStateCLK == 1) {
    if (digitalRead(pinDT) != currentStateCLK) {
      counter++;
      Serial.print("SAĞA DÖNDÜ -> Sayı: ");
    } else {
      counter--;
      Serial.print("SOLA DÖNDÜ -> Sayı: ");
    }
    Serial.println(counter);
  }
  lastStateCLK = currentStateCLK;

  if (digitalRead(pinSW) == LOW) {
    Serial.println("BUTONA BASILDI (Seçim Yapıldı)!");
    delay(200);
  }
}
Seri Monitör Çıktısı (Simülasyon):
Sayıcı Değeri: +14 | YÖN: SAĞA DÖNDÜ

Çalışma Mantığı ve Fiziksel İlkeler

Kuadratür Enkoder Nasıl Yön Algılar?

KY-040 içinde 90 derece faz farkıyla dizilmiş iki anahtar (CLK ve DT) bulunur:

  • Saat yönünde (sağa) çevrildiğinde: CLK sinyali DT sinyalinden önce LOW olur.
  • Saat yönünün tersine (sola) çevrildiğinde: DT sinyali CLK sinyalinden önce LOW olur.
  • Arduino bu faz önceliğini okuyarak enkoderin sağa mı yoksa sola mı çevrildiğini anında anlar.

    Artıları ve Sınırlamaları

    Güçlü Yönleri (Avantajlar)
  • Sonsuz 360 derece dönebilme (potansiyometre gibi takılmaz)
  • Miline basıldığında çalışan entegre basmalı buton (SW)
  • LCD menü gezinmeleri ve dijital ses ayarları için standart
  • Sınırlamaları (Dezavantajlar)
  • Mekanik kontak sıçramaları (contact bounce) yazılımla filtrelenmelidir
  • Sık Karşılaşılan Sorunlar ve Çözümleri

  • CLK ve DT pinlerine 10nF kondansatör eklenmesi sıçramaları donanımsal olarak yok eder.