Le codeur rotatif KY-040 est un dispositif mécanique utilisé pour mesurer la position ou la rotation angulaire. Il est couramment utilisé dans les commandes de volume, la navigation de menu et le suivi de position en robotique. Ce tutoriel vous guidera dans la connexion et l'utilisation du codeur rotatif KY-040 avec Arduino.
Ce dont vous aurez besoin
- Module d'encodeur rotatif KY-040
- Board Arduino (par exemple, Uno, Mega, Nano)
- Fils de planche à pain et de cavalier
- Un ordinateur avec l'ide Arduino installé
Étape 1: Comprendre l'encodeur rotatif KY-040
L'encodeur KY-040 se compose d'un cadran rotatif qui génère des impulsions lorsqu'il est tourné. Il comprend également un bouton-poussoir intégré.
Pinout KY-040
Épingle | Fonction |
---|---|
GND | Sol |
+ | Alimentation (5V) |
CLK | Signal d'impulsion d'horloge |
Dt | Signal d'impulsion de données |
Swin | Signal à bouton-poussoir |
Étape 2: Câblage du KY-040 à Arduino
Voici comment connecter le KY-040 à un Arduino Uno:
Pin KY-040 | Épingle arduino |
---|---|
GND | GND |
+ | 5V |
CLK | PIN 2 |
Dt | PIN 3 |
Swin | PIN 4 |
Étape 3: Téléchargez le code
L'exemple de code suivant lit la rotation et détecte les appuyés sur le bouton de rotation du codeur rotatif:
#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
}
}
Étape 4: Testez la configuration
- Connectez l'Arduino à votre ordinateur via USB.
- Ouvrez l'ide Arduino et sélectionnez le bon Conseil et Port sous Outils menu.
- Téléchargez le code en cliquant Télécharger.
- Ouvrez le moniteur en série (Outils > Moniteur en série) et régler le taux de bauds sur
9600
. - Faites pivoter l'encodeur et appuyez sur le bouton. Observez le compteur et le bouton Appuyez sur les messages dans le moniteur série.
Applications de l'encodeur rotatif KY-040
- Volume ou contrôle de la luminosité
- Navigation par menu
- Suivi de position du moteur
- Robotiques et systèmes d'automatisation
Dépannage
- Aucune détection de rotation: Vérifiez le câblage CLK et DT et assurez-vous que les broches correspondent au code.
- Lectures instables: Ajoutez un petit délai de débocage pour stabiliser les signaux de l'encodeur.
-
Bouton non détecté: Vérifiez que la broche SW est correctement connectée et utilise
INPUT_PULLUP
mode.
Conclusion
Vous avez réussi à interfacer le codeur rotatif KY-040 avec Arduino. Ce module polyvalent vous permet d'ajouter le suivi de rotation et les fonctionnalités de bouton à vos projets. Expérimentez-le dans différentes applications, comme la construction de commandes personnalisées ou la navigation de menus dans vos systèmes!