Paano gamitin ang KY-040 rotary encoder na may Arduino

How to Use the KY-040 Rotary Encoder with Arduino

Ang KY-040 rotary encoder ay isang mekanikal na aparato na ginamit upang masukat ang angular na posisyon o pag-ikot. Karaniwang ginagamit ito sa mga kontrol ng dami, pag -navigate sa menu, at pagsubaybay sa posisyon sa mga robotics. Ang tutorial na ito ay gagabay sa iyo sa pamamagitan ng pagkonekta at paggamit ng KY-040 rotary encoder kasama si Arduino.


Ano ang kakailanganin mo

  1. KY-040 Rotary encoder module
  2. Arduino Board (hal., Uno, Mega, Nano)
  3. Mga wire ng tinapay at jumper
  4. Isang computer na may naka -install na Arduino IDE

Hakbang 1: Pag-unawa sa KY-040 Rotary Encoder

Ang KY-040 encoder ay binubuo ng isang rotary dial na bumubuo ng mga pulses kapag pinaikot. Kasama rin dito ang isang built-in na pindutan ng push.

KY-040 Pinout

Pin Function
Gnd Lupa
+ Power Supply (5V)
Clk Signal ng tibok ng orasan
DT Signal ng pulso ng data
SW Signal ng pindutan ng push

Hakbang 2: Ang mga kable ng KY-040 kay Arduino

Narito kung paano ikonekta ang KY-040 sa isang Arduino Uno:

KY-040 PIN Arduino Pin
Gnd Gnd
+ 5v
Clk Pin 2
DT Pin 3
SW Pin 4

Hakbang 3: Mag -upload ng code

Ang sumusunod na halimbawa ng code ay nagbabasa ng pag -ikot ng rotary encoder at nakita ang mga pindutan ng pindutan:

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

Hakbang 4: Subukan ang pag -setup

  1. Ikonekta ang Arduino sa iyong computer sa pamamagitan ng USB.
  2. Buksan ang Arduino IDE at piliin ang tama Lupon at Port sa ilalim ng Mga tool menu.
  3. I -upload ang code sa pamamagitan ng pag -click Mag -upload.
  4. Buksan ang serial monitor (Mga tool > Serial monitor) at itakda ang rate ng baud sa 9600.
  5. Paikutin ang encoder at pindutin ang pindutan. Alamin ang counter at pindutan ng pindutin ang mga mensahe sa serial monitor.

Mga aplikasyon ng KY-040 Rotary Encoder

  1. Dami o kontrol ng ningning
  2. Pag -navigate sa menu
  3. Pagsubaybay sa posisyon ng motor
  4. Mga Robotics at Automation System

Pag -aayos

  • Walang pag -ikot ng pag -ikot: Suriin ang mga kable ng CLK at DT at tiyakin na ang mga pin ay tumutugma sa code.
  • Hindi matatag na pagbabasa: Magdagdag ng isang maliit na pagkaantala ng debounce upang patatagin ang mga signal ng encoder.
  • Hindi napansin ang pindutan: Patunayan ang SW pin ay maayos na konektado at ginagamit INPUT_PULLUP mode.

Konklusyon

Matagumpay mong na-interface ang KY-040 rotary encoder kasama si Arduino. Ang maraming nalalaman module ay nagbibigay -daan sa iyo upang magdagdag ng pag -andar ng pag -ikot at pag -andar ng pindutan sa iyong mga proyekto. Eksperimento dito sa iba't ibang mga aplikasyon, tulad ng pagbuo ng mga pasadyang kontrol o pag -navigate ng mga menu sa iyong mga system!

Mag -iwan ng komento

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.