Comment utiliser l'encodeur rotatif KY-040 avec Arduino

How to Use the KY-040 Rotary Encoder with Arduino

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

  1. Module d'encodeur rotatif KY-040
  2. Board Arduino (par exemple, Uno, Mega, Nano)
  3. Fils de planche à pain et de cavalier
  4. 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

  1. Connectez l'Arduino à votre ordinateur via USB.
  2. Ouvrez l'ide Arduino et sélectionnez le bon Conseil et Port sous Outils menu.
  3. Téléchargez le code en cliquant Télécharger.
  4. Ouvrez le moniteur en série (Outils > Moniteur en série) et régler le taux de bauds sur 9600.
  5. 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

  1. Volume ou contrôle de la luminosité
  2. Navigation par menu
  3. Suivi de position du moteur
  4. 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!

Laissez un commentaire

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.