Problèmes d'encodeur EC11

si j'ai bien compris, tu as 4 encodeurs, voie A et B (pas de Z).
tu veux rester en 5V.
t'as une MEGA2560.

tes codeurs on une resolution de ? (points/tours?), a quelle vitesse?
un codeur 1000pts/tour peut etre geré en x1, x2 et x4 (=1000, 2000 ou 4000 point de resolution)
tolere tu de n'avoir que du x2?

doit tu garder des broches interruptive pour autre chose? combien?

tu as 6 entrées interruptive sur la MEGA (+2 qui sont pas ressortie, sauf erreur - jamais essayé)

en gros, sans aucune lib, le principe (qui marche, deja essayé), tu est capable de gerer 6 codeurs 1/2 interruptifs, et potentielement 8:

...
#define pinCodeur1A=2;
#define pinCodeur1B=4;
#define pinCodeur2A=3;
#define pinCodeur2B=5;

volatile int codeur1=0;
volatile int codeur2=0;

attachInterrupt(0, Codeur1A_IT, CHANGE);
attachInterrupt(1, Codeur2A_IT, CHANGE);
....

void Codeur1A_IT() {
  if (digitalRead(pinCodeur1A) == digitalRead(pinCodeur1B)) {
    codeur1++;
  } else {
    codeur1--;
  }

void Codeur2A_IT() {
  if (digitalRead(pinCodeur2A) == digitalRead(pinCodeur2B)) {
    codeur2++;
  } else {
    codeur2--;
  }

//     AB
// 0 : 00
// 1 : 01
// 2 : 11
// 3 : 10

il n'y a que 2 cas ou les voies A et B sont identiques lorsque l'interruption est déclenchée:
1 vers 2 => ++, sinon --
3 vers 0 => ++, sinon --
tu n'est pas en quadrature x4, mais x2, ca peut etre suffisant, avec une entrée IT par codeur.

voir:
http://playground.arduino.cc/Main/RotaryEncoders