Wah que de réponses 
Merci à vous
Tout d'abord, j'ai changé le CHANGE par RISING, et j'obtiens bien 720 pulses / tr
Pour le vérifier, je me suis imprimé un support pour disque gradué à mettre sur l'encodeur, et malgré la précision qui est plutôt moyenne, je lis 720 pulses pour environ 360°
En revanche, j'ai observé un phénomène avec ce changement, c'est l'inversion du sens de rotation.
En sens horaire mes valeurs devenaient négatives, et en sens anti-horraire positives.
J'ai inversé les pins 2 et 3 (channel A et B ) pour retrouver un sens que je jugeais correct.
Ce n'est certainement pas la manière la plus propre, mais ça fonctionne.
Point réglé, au moins ça progresse 
Mais pour le reste, je suis encore plus perdu avec toutes les choses que j'ai essayées 
Pour terminer la partie encodeur de mon projet, j'ai besoin de :
définir 360 ° / tr
de compter jusqu'à 720 ° et une fois 720 ° lu, repartir à 0 °
d'ajouter un code pour bouton de remise à zéro en toute condition.
J'ai essayé pas mal de chose, comme de définir max_pulse = 720° et le float angle=compteur/720.0*360.0;
et également essayé une condition if pour remettre le compteur à 0 si compteur==720
sans succès ...
Si vous pouvez me donner encore un coup de papate
Je vous montre mon code actuel :
#define pinA 2
#define pinB 3
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,7,6,5,4);
int compteur = 0 ;
bool etatA ;
bool dernierEtatA ;
long unsigned tempsA ;
void setup() {
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("Degre vilo");
pinMode(pinA,INPUT);
pinMode(pinB,INPUT);
Serial.begin (115200);
attachInterrupt(digitalPinToInterrupt(pinA), changementA, RISING ); // on attache un interrupt sur le pinA, qui appelle la fonction changementA, avec une valeur de declenchement RISING
dernierEtatA = digitalRead(pinA); // Etat de A au setup
tempsA = millis(); // memorisation du temps pour eviter des erreurs de changements d'etat
}
void loop() {
// Ecran LCD
lcd.setCursor(0,1);
lcd.print( compteur );
lcd.print(" ");
}
void changementA(){
// on mesure A
etatA = digitalRead(pinA);
// controle du temps pour eviter des erreurs
if( abs(millis() - tempsA) > 0.5){
// Si B different de l'ancien état de A alors
if(digitalRead(pinB) != dernierEtatA){
compteur--;
}
else{
compteur++;
}
// memorisation du temps pour A
tempsA = millis();
}
// memorisation de l'état de A
dernierEtatA = etatA ;
Serial.print(" degre vilo : "); //affichage du compteur
Serial.println( compteur );
}
Fred