Jak używać enkodera obrotowego KY-040 z Arduino

How to Use the KY-040 Rotary Encoder with Arduino

Koder obrotowy KY-040 to urządzenie mechaniczne używane do pomiaru położenia lub obrotu kątowego. Jest powszechnie używany w elementach sterujących woluminów, nawigacji menu i śledzeniu pozycji w robotyce. Ten samouczek poprowadzi Cię przez połączenie i użycie enkodera obrotowego KY-040 z Arduino.


Czego będziesz potrzebować

  1. KY-040 Moduł enkodera obrotowego
  2. Arduino Board (np. UNO, Mega, Nano)
  3. Druty chleba i skoczków
  4. Komputer z zainstalowanym Arduino IDE

Krok 1: Zrozumienie enkodera obrotowego KY-040

En enkoder KY-040 składa się z obrotowego pokrętła, który generuje impulsy po obróceniu. Zawiera także wbudowany przycisk.

KY-040 Pinout

Szpilka Funkcjonować
GND Grunt
+ Zasilacz (5 V)
Clk Sygnał impulsu zegara
Dt Sygnał impulsu danych
SW Sygnał przycisku

Krok 2: Okablowanie KY-040 do Arduino

Oto jak połączyć KY-040 z Arduino Uno:

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

Krok 3: Prześlij kod

Poniższy przykład odczytuje obrót Rotary Encoder i wykrywa przycisk naciska:

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

Krok 4: Przetestuj konfigurację

  1. Podłącz Arduino do komputera za pomocą USB.
  2. Otwórz Arduino IDE i wybierz poprawne Tablica I Port pod Narzędzia menu.
  3. Prześlij kod, klikając Wgrywać.
  4. Otwórz monitor szeregowy (Narzędzia > Monitor szeregowy) i ustaw wskaźnik transmisji na 9600.
  5. Obróć enkoder i naciśnij przycisk. Obserwuj licznik i przycisk Naciśnij wiadomości w monitor szeregowych.

Zastosowania enkodera obrotowego KY-040

  1. Kontrola objętości lub jasności
  2. Nawigacja menu
  3. Śledzenie pozycji silnika
  4. Systemy robotyki i automatyzacji

Rozwiązywanie problemów

  • Brak wykrywania rotacji: Sprawdź okablowanie CLK i DT i upewnij się, że piny pasują do kodu.
  • Niestabilne odczyty: Dodaj niewielkie opóźnienie debuna, aby ustabilizować sygnały enkodera.
  • Przycisk nie wykryty: Sprawdź, czy styk SW jest odpowiednio podłączony i używa INPUT_PULLUP tryb.

Wniosek

Z powodzeniem połączyłeś enkoder obrotowy KY-040 z Arduino. Ten wszechstronny moduł umożliwia dodawanie funkcji śledzenia rotacji i przycisku do swoich projektów. Eksperymentuj z nim w różnych aplikacjach, takich jak budowanie niestandardowych elementów sterujących lub nawigacja w systemach!

Zostaw komentarz

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.