Cara menggunakan encoder rotary KY-040 dengan Arduino

How to Use the KY-040 Rotary Encoder with Arduino

Encoder rotary KY-040 adalah perangkat mekanis yang digunakan untuk mengukur posisi atau rotasi sudut. Ini biasanya digunakan dalam kontrol volume, navigasi menu, dan pelacakan posisi dalam robotika. Tutorial ini akan memandu Anda melalui penghubung dan menggunakan rotary encoder KY-040 dengan Arduino.


Apa yang Anda Butuhkan

  1. Modul Encoder Rotary KY-040
  2. Dewan Arduino (mis., Uno, mega, nano)
  3. Papan tempat memotong papan dan kabel jumper
  4. Komputer dengan IDE Arduino diinstal

Langkah 1: Memahami Encoder Rotary KY-040

Encoder KY-040 terdiri dari putaran putar yang menghasilkan pulsa saat diputar. Ini juga termasuk tombol tekan bawaan.

KY-040 Pinout

Pin Fungsi
Gnd Tanah
+ Catu daya (5V)
Clk Sinyal denyut nadi jam
Dt Sinyal pulsa data
Sw Sinyal tombol tekan

Langkah 2: Kabel KY-040 ke Arduino

Inilah cara menghubungkan KY-040 ke Arduino UNO:

Pin KY-040 Pin Arduino
Gnd Gnd
+ 5v
Clk Pin 2
Dt Pin 3
Sw Pin 4

Langkah 3: Unggah kode

Contoh kode berikut membaca rotasi rotary encoder dan mendeteksi tombol tekan:

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

Langkah 4: Uji pengaturan

  1. Hubungkan Arduino ke komputer Anda melalui USB.
  2. Buka IDE Arduino dan pilih yang benar Papan Dan Pelabuhan di bawah Peralatan menu.
  3. Unggah kode dengan mengklik Mengunggah.
  4. Buka monitor serial (Peralatan > Monitor serial) dan atur baud rate ke 9600.
  5. Putar enkoder dan tekan tombol. Amati konter dan tekan tombol pesan di monitor serial.

Aplikasi Encoder Rotary KY-040

  1. Kontrol volume atau kecerahan
  2. Navigasi menu
  3. Pelacakan posisi motor
  4. Sistem robotika dan otomatisasi

Pemecahan masalah

  • Tidak ada deteksi rotasi: Periksa kabel CLK dan DT dan pastikan pin cocok dengan kode.
  • Bacaan yang tidak stabil: Tambahkan penundaan debounce kecil untuk menstabilkan sinyal encoder.
  • Tombol tidak terdeteksi: Verifikasi pin SW terhubung dan penggunaan dengan benar INPUT_PULLUP mode.

Kesimpulan

Anda telah berhasil menghubungkan encoder rotary KY-040 dengan Arduino. Modul serbaguna ini memungkinkan Anda untuk menambahkan pelacakan rotasi dan fungsionalitas tombol ke proyek Anda. Eksperimen dengan itu dalam aplikasi yang berbeda, seperti membangun kontrol khusus atau menavigasi menu di sistem Anda!

Tinggalkan komentar

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.