Go Down

Topic: Encodeur rotatif (Read 12709 times) previous topic - next topic

Artouste


... codeur est un KY040 (5 pins avec switch).

Dans la lib de PJRC, je ne comprends pas les lignes :
Code: [Select]
Encoder knobLeft(5, 6);
Encoder knobRight(7, 8);


...

Bonjour
tu utilise là l'exemple pour utiliser deux encodeurs differents
si tu a un seul encodeur c'est inutile (et meme contreproductif)  8)

john_lenfr

Oui il faut que tu ne déclare qu'un seul de la façon suivante:

Déclarations:
Code: [Select]

// include lib
#include <Encoder.h>

// encoder variables
#define SWI 2 // Intr 0 = Pin 2 but finally I don't use interupt so this pin is used as normal digital pin
#define CHA 6 // pin A encoder
#define CHB 7 // pin B encoder

// initialize the encoder
Encoder encoder(CHA,CHB); // initialize the encoder
int oldPosition  = -999; // init for 1st loop


Dans le setup:
Code: [Select]

pinMode(CHA, INPUT);
pinMode(CHB, INPUT);
pinMode(SWI, INPUT);


Pour utiliser la commande dans le loop:
Code: [Select]

readEncoder();// renvoie -1 ou +1 ou 0


La fonction à déclarer après le loop:
Code: [Select]
// returns 1 for right, -1 for left, or 0 for no movement
int readEncoder() {
 // if 'int' is not enough, use 'long' instead (int: -32768 to +32767 and long: -2147483648 to +2147483647)
 // for a lcd menu 'int' is OK
 moved = true;
 int newPosition = encoder.read()/4; // the lib is so accurate that it provides 4X counting mode and is highly optimized code when running on Teensy or Arduino boards
 int pos=0;
 if (newPosition != oldPosition) {
   pos = oldPosition-newPosition;
   oldPosition = newPosition;
   return pos;
 }
 moved = false;
 return pos;
 
}


;)

Go Up