De KY-040 roterende encoder is een mechanisch apparaat dat wordt gebruikt om de hoekpositie of rotatie te meten. Het wordt vaak gebruikt in volumebesturing, menusavigatie en positie volgen in robotica. Deze zelfstudie leidt u door het verbinden en gebruiken van de KY-040 Rotary Encoder met Arduino.
Wat u nodig hebt
- KY-040 roterende encodermodule
- Arduino Board (bijv. UNO, Mega, Nano)
- Breadboard en jumper draden
- Een computer met de Arduino Ide geïnstalleerd
Stap 1: Inzicht in de KY-040 Rotary Encoder
De KY-040-encoder bestaat uit een roterende wijzerplaat die pulsen genereert wanneer het is gedraaid. Het bevat ook een ingebouwde drukknop.
KY-040 pinout
Pin | Functie |
---|---|
GND | Grond |
+ | Voeding (5V) |
Kletsen | Klokpulssignaal |
DT | Data -pulsignaal |
SW | Druk op knopsignaal |
Stap 2: Ky-040 bedraden aan Arduino
Hier leest u hoe u de KY-040 verbindt met een Arduino Uno:
KY-040-pin | Arduino Pin |
---|---|
GND | GND |
+ | 5V |
Kletsen | Pin 2 |
DT | Pin 3 |
SW | Pin 4 |
Stap 3: Upload de code
De volgende voorbeeldcode leest de rotatie van de roterende encoder en detecteert de knop op de knop:
#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
}
}
Stap 4: Test de instelling
- Sluit de Arduino via USB aan op uw computer.
- Open de Arduino IDE en selecteer de juiste Bord En Haven onder de Hulpmiddelen menu.
- Upload de code door te klikken Uploaden.
- Open de seriële monitor (Hulpmiddelen > Serie -monitor) en stel het baudrates in op
9600
. - Draai de encoder en druk op de knop. Bekijk de teller en de knop op berichten in de seriële monitor.
Toepassingen van de KY-040 Rotary Encoder
- Volume of helderheidsregeling
- Menu -navigatie
- Motorpositie tracking
- Robotica- en automatiseringssystemen
Problemen oplossen
- Geen rotatiedetectie: Controleer de CLK- en DT -bedrading en zorg ervoor dat de pennen overeenkomen met de code.
- Onstabiele lezingen: Voeg een kleine debounce -vertraging toe om de coderingssignalen te stabiliseren.
-
Knop niet gedetecteerd: Controleer of de SW -pin correct is aangesloten en gebruikt
INPUT_PULLUP
modus.
Conclusie
Je hebt met succes de KY-040 Rotary Encoder met Arduino gekoppeld. Met deze veelzijdige module kunt u rotatie -tracking- en knopfunctionaliteit toevoegen aan uw projecten. Experimenteer ermee in verschillende toepassingen, zoals het bouwen van aangepaste bedieningselementen of het navigeren van menu's in uw systemen!