Cum se folosește codificatorul rotativ KY-040 cu Arduino

How to Use the KY-040 Rotary Encoder with Arduino

Codificatorul rotativ KY-040 este un dispozitiv mecanic utilizat pentru a măsura poziția sau rotirea unghiulară. Este utilizat în mod obișnuit în controalele de volum, navigarea meniului și urmărirea poziției în robotică. Acest tutorial vă va ghida prin conectarea și utilizarea codificatorului rotativ KY-040 cu Arduino.


Ce vei avea nevoie

  1. Modul de codificator rotativ KY-040
  2. Arduino Board (de exemplu, Uno, Mega, Nano)
  3. Tablă de pâine și jumper
  4. Un computer cu IDE Arduino instalat

Pasul 1: Înțelegerea codificatorului rotativ KY-040

Codificatorul KY-040 constă dintr-un cadran rotativ care generează impulsuri atunci când este rotit. De asemenea, include un buton de apăsare încorporat.

KY-040 PINOUT

Ac Funcţie
GND Sol
+ Sursă de alimentare (5V)
Clk Semnal puls de ceas
Dt Semnal de impuls de date
SW Semnalul butonului de apăsare

Pasul 2: Cablarea KY-040 către Arduino

Iată cum să conectați KY-040 la un Arduino Uno:

KY-040 PIN Pinul Arduino
GND GND
+ 5V
Clk Pin 2
Dt Pinul 3
SW Pinul 4

Pasul 3: Încărcați codul

Următorul exemplu de cod citește rotația codificatorului rotativ și detectează apăsarea butonului:

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

Pasul 4: Testați configurarea

  1. Conectați Arduino la computer prin USB.
  2. Deschideți IDE Arduino și selectați corect Bord şi Port sub Instrumente meniu.
  3. Încărcați codul făcând clic pe Încărcați.
  4. Deschideți monitorul în serie (Instrumente > Monitor în serie) și setați rata de transfer la 9600.
  5. Rotiți codificatorul și apăsați butonul. Observați contorul și butonul apăsați mesajele din monitorul serial.

Aplicații ale codificatorului rotativ KY-040

  1. Controlul volumului sau al luminozității
  2. Navigare în meniu
  3. Urmărirea poziției motorului
  4. Sisteme de robotică și automatizare

Depanare

  • Fără detectare a rotației: Verificați cablarea CLK și DT și asigurați -vă că pinii se potrivesc cu codul.
  • Citiri instabile: Adăugați o mică întârziere de debutare pentru a stabiliza semnalele codificatorului.
  • Butonul nu este detectat: Verificați că știftul SW este conectat corect și utilizează INPUT_PULLUP Mod.

Concluzie

Ați interfațat cu succes codificatorul rotativ KY-040 cu Arduino. Acest modul versatil vă permite să adăugați urmărirea rotației și funcționalitatea butonului la proiectele dvs. Experimentați cu acesta în diferite aplicații, cum ar fi construirea controalelor personalizate sau navigarea meniurilor în sistemele dvs.!

Lasă un comentariu

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.