Encodeur Rotatif pour Arduino (KY-040)

Encodeur Rotatif pour Arduino (KY-040)

Code produit: KY-040
Qté en Stock : 3
  • $2.49


Lorsque le commutateur rotatif est déplacé, le sens du mouvement et la position actuelle du commutateur rotatif sont codés et émis via les sorties et peuvent donc être utilisés dans d'autres applications.

Codage

L'idée avec un commutateur/encodeur rotatif est que pour chaque "pas" de rotation, l'état ne change qu'une des deux broches de sortie à la fois. En fonction de celui des deux qui a changé en premier, on peut conclure au sens de rotation en faisant attention au codage suivant.

Dans le sens des aiguilles d'une montre [A change en premier] -> Pin_CLK

A B
0 0
1 0
1 1
0 1
0 0

Dans le sens inverse des aiguilles d'une montre [B change en premier] -> Pin_DT.

A B
0 0
0 1
1 1
1 0
0 0

Affectation des broches

Exemple de code Arduino

Affectation des broches Arduino

Arduino Capteur
5V +V
Masse GND
Pin 3 CLK
Pin 4 DT
Pin 5 Bouton

Si un changement d'état de la broche s'est produit, le programme vérifie laquelle des deux broches a changé en premier, ce qui indique le sens de rotation. Cette information est obtenue en comparant l'une des deux valeurs de la broche d'une manche précédente avec la valeur de la manche actuelle.

Une fois la direction déterminée, les pas depuis la position de départ sont comptés et édités. Appuyer sur le bouton de l'encodeur réinitialise la position actuelle.

Pour la sortie série : Baud rate = 115200.

// Initialisation des variables nécessaires
int Compteur = 0; 
boolean Direction;
int Pin_clk_Letzter;  
int Pin_clk_Aktuell;
 
// Définition des broches d'entrées
int pin_clk = 3;  
int pin_dt = 4; 
int button_pin = 5;
  
  
void setup() 
{ 
   // Initialisation des broches d'entrées...
   pinMode (pin_clk,INPUT);
   pinMode (pin_dt,INPUT);
   pinMode (button_pin,INPUT);
    
   // ...et activation de leurs résistances de PULL-UP
   digitalWrite(pin_clk, true);
   digitalWrite(pin_dt, true);
   digitalWrite(button_pin, true);
    
   // Lecture initiale de Pin_CLK
   Pin_clk_Letzter = digitalRead(pin_clk);   
   Serial.begin (115200);
 } 
 
// Le programme vérifie si un changement des états des broches a eu lieu, 
// et selon la broche qui est modifiée en premier, détermine le sens de rotation.
// Cette information est obtenue par la comparaison des signaux présents sur les 2 sorties.
// Une fois que la direction a été déterminée, on compte les mouvements depuis la position
// de départ et on les envoie vers la sortie série.

Écrire une critique

Remarque: HTML n`est pas traduit!
    Mal           Bien
Captcha