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
- Modul de codificator rotativ KY-040
- Arduino Board (de exemplu, Uno, Mega, Nano)
- Tablă de pâine și jumper
- 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
- Conectați Arduino la computer prin USB.
- Deschideți IDE Arduino și selectați corect Bord şi Port sub Instrumente meniu.
- Încărcați codul făcând clic pe Încărcați.
- Deschideți monitorul în serie (Instrumente > Monitor în serie) și setați rata de transfer la
9600
. - 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
- Controlul volumului sau al luminozității
- Navigare în meniu
- Urmărirea poziției motorului
- 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.!