L'encodeur rotatif KY-040 est un dispositif d'entrée rotatif qui permet de fournir une information de position d'un bouton en communiquant les sens de rotation un nombre de positions rencontrées durant la rotation du bouton vers la gauche ou vers la droite.
C’est un excellent appareil pour le contrôle pas à pas et servomoteur. Vous pouvez également l’utiliser pour contrôler
des appareils comme les potentiomètres numériques.
Configuration
LCK : Sortie A de l'encodeur
DT : Sortie B de l'encodeur
SW : Bouton poussoir (option non implémentée)
+ : Alimentation 5V
GND : Masse
Code
Cet exemple n'utilise pas de bibliothèque spécifique.
int pinA = 3; // Connected to CLK on KY-040 int pinB = 4; // Connected to DT on KY-040 int encoderPosCount = 0; int pinALast; int aVal; boolean bCW;
void setup() { pinMode (pinA,INPUT); pinMode (pinB,INPUT); /* Read Pin A Whatever state it's in will reflect the last position */ pinALast = digitalRead(pinA); Serial.begin (9600); }
void loop() { aVal = digitalRead(pinA); if (aVal != pinALast){ // Means the knob is rotating // if the knob is rotating, we need to determine direction // We do that by reading pin B. if (digitalRead(pinB) != aVal) { // Means pin A Changed first - We're Rotating Clockwise encoderPosCount ++; bCW = true; } else {// Otherwise B changed first and we're moving CCW bCW = false; encoderPosCount--; } Serial.print ("Rotated: "); if (bCW){ Serial.println ("clockwise"); }else{ Serial.println("counterclockwise"); } Serial.print("Encoder Position: "); Serial.println(encoderPosCount); } pinALast = aVal; }
|