Description
Module d’encodeur rotatif Arduino KY-040
Tension de fonctionnement : 5 V
Nombre d’impulsions circulaires : 20
En tournant le codeur rotatif, la fréquence d’impulsion de sortie peut être comptée dans le sens positif et dans le sens inverse pendant la rotation. Contrairement au comptage par potentiomètre rotatif, ce comptage de rotation n’est pas limité. Avec les boutons du codeur rotatif, il peut être réinitialisé à son état initial, c’est-à-dire que le comptage commence à partir de 0.
Prise en main du module de codeur rotatif KY-040 Brick Sensor
Dans ce didacticiel, nous allons traiter le module de codeur rotatif KY-040 Brick Sensor, simple et facile à connecter avec Arduino.
Les encodeurs rotatifs sont utiles pour les opérations de comptage, ils convertissent l’angle de rotation en signal numérique de comptage, ils peuvent tourner à 360º sans aucune limite et donner une sortie d’impulsion. Cet article donne des détails sur l’interface de base d’un encodeur rotatif Arduino et le fonctionnement des encodeurs rotatifs conventionnels.
Lorsque l’arbre tourne dans le sens des aiguilles d’une montre, l’impulsion de sortie est générée sur la broche A du codeur avec un déphasage de 90º par rapport à la broche B du codeur.
Au fait, lorsque l’arbre tourne dans le sens inverse des aiguilles d’une montre, la sortie génère au niveau des broches de sortie A et B de l’encodeur est inversée.
Étape 1 : Matériel requis
Étape 2 : Connexion du matériel
Connectez les broches d’alimentation de l’encodeur rotatif à la carte Arduino en connectant + à 5 V et Gnd à Gnd. Connectez ensuite la broche CLK (sortie A de l’encodeur) à la broche numérique D2 de l’Arduino et la broche DT (sortie B de l’encodeur) à la broche numérique D1.
Étape 3 : Téléchargez l’exemple de croquis
Une fois le raccordement terminé, téléchargez le croquis suivant pour obtenir l’angle et la position de l’encodeur rotatif dans le moniteur série.
int brocheA = 1 ; // Connecté à CLK sur KY-040
int pinB = 2; // Connecté à DT sur KY-040
int encoderPosCount = 0;
int pinALast ;
int aVal ;
booléen bCW ;
void setup() {
pinMode (pinA,INPUT);
pinMode (pinB, ENTRÉE);
/* Lire la broche A
Quel que soit son état, cela reflète la dernière position
*/
pinALast = digitalRead(pinA);
Série.begin (9600);
}
void loop() {
aVal = digitalRead(pinA);
if (aVal != pinALast){ // Signifie que le bouton tourne
// Si le bouton tourne, nous devons déterminer la direction
// Nous le faisons en lisant la broche B.
if (digitalRead(pinB) != aVal) { / / Signifie que la broche A a été modifiée en premier – Nous tournons dans le sens des aiguilles d’une montre
encoderPosCount ++;
BCW = vrai ;
} else {// Sinon B a changé en premier et nous nous déplaçons dans le sens antihoraire
bCW = false;
encoderPosCount–;
}
Serial.print (“Rotation : “);
if (bCW){
Serial.println (“dans le sens des aiguilles d’une montre”);
}else{
Serial.println(“counterclock”);
}
Serial.print(“Position de l’encodeur : “);
Serial.println(encoderPosCount);
}
pinALast = aVal;
}
Dans le code Arduino, définissez d’abord les broches de sortie et initialisez le nombre à 0, puis déclarez les variables d’état actuel et précédent. En utilisant la boucle de condition « IF », obtenez l’état actuel de l’encodeur rotatif et comparez-le à l’état précédent. S’il n’y a pas de changement, le nombre reste le même, sinon la valeur du nombre augmente pour la rotation dans le sens des aiguilles d’une montre et diminue pour la rotation dans le sens inverse des aiguilles d’une montre. .
Étape 4 : Test du circuit
ouvrez votre série de moniteurs en cliquant sur l’icône dans le coin supérieur droit (comme l’icône de recherche).