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
- KY-040 Rotary encoder module
- Arduino Board (hal., Uno, Mega, Nano)
- Mga wire ng tinapay at jumper
- 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
- Ikonekta ang Arduino sa iyong computer sa pamamagitan ng USB.
- Buksan ang Arduino IDE at piliin ang tama Lupon at Port sa ilalim ng Mga tool menu.
- I -upload ang code sa pamamagitan ng pag -click Mag -upload.
- Buksan ang serial monitor (Mga tool > Serial monitor) at itakda ang rate ng baud sa
9600
. - 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
- Dami o kontrol ng ningning
- Pag -navigate sa menu
- Pagsubaybay sa posisyon ng motor
- 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!