Control de motor usando Encoder con setpoint c/potenciómetro.

Necesito controlar la posición de un motor usando un encoder y un potenciometro, el código esta casi completo pero no se que es lo que falte puesto que el motor nunca se detiene, el motor que estoy utilizando es FaulHaber 2342L012CR y estoy utilizando el arduino MEGA 2560

#define B 19
#define A 18
void setup() {
 Serial.begin(9600);
 pinMode(4,OUTPUT);
 pinMode(6,OUTPUT);
 pinMode(A0,INPUT);
 analogWrite(9,200);
 digitalWrite(4,HIGH);
 digitalWrite(6,LOW);
 attachInterrupt(4,ISR_EnA,RISING);
}
int var=0;
int y;
int ranura;
int v_enc=2173;
void loop() {
var = analogRead(A0);
y = map(var,0,1024,0,360)+1000;
Serial.print("Grados: ");
Serial.println(y);
ranura = y/0.46;
Serial.print("Ranura: ");
Serial.println(ranura);
 if(ranura > v_enc) {
   digitalWrite(4,HIGH);
   digitalWrite(6,LOW);
   Serial.print("v_enc: ");
   Serial.println(v_enc);
 }
 else if (ranura< v_enc){
   digitalWrite(4,LOW);
   digitalWrite(6,HIGH);
   Serial.print("v_enc: ");
   Serial.println(v_enc);
 }
 else{
   digitalWrite(4,HIGH);
   digitalWrite(6,HIGH);
   Serial.print("v_enc: ");
   Serial.println(v_enc);
 }
}
void ISR_EnA(){
 if (digitalRead(B)){
             v_enc ++;}
 else
 {
   v_enc --;
 }
}

Hola,
Sera mejor que expliques un poquito mas lo que hace cada parte del programa pero así la primera intentas una interrupción en el pin 4 y yo creo que ese pin no vale, para el uno son en el pin 2 ó 3 y el mega tiene mas pero el pin 4 no es un pin con interrupción en ningún modelo.

Porfavor ,repasa las normas del foro ,sobre todo en lo referente a la eleccion del titulo del post y la manera adecuada de postear codigo.Gracias.

Además en la parte

Papilors:
attachInterrupt(4,ISR_EnA,RISING);

fijate que acá no podés invocar directamente el pin 4... pues en UNO sólo tienen interrupciones los pines 1 y 2, que se invocan 0 y 1 respectivamente... en tu caso poné el cable en el pin 1 y te quedaría

attachInterrupt(0,ISR_EnA,RISING);

Antes de postear nuestro primer mensaje, debemos leer las normas del foro.
Por favor, edita tus mensajes de acuerdo con ellas.

Bueno, creo que el interesado ya no esta interesado.

inelint:
UNO sólo tienen interrupciones los pines 1 y 2

Creo que te equivovas, los pines son el 2 y 3 para el uno y 2, 3, 18, 19, 20 y 21 para mega, lo puedes consultar en attachInterrupt()

inelint:
que se invocan 0 y 1 respectivamente... en tu caso poné el cable en el pin 1 y te quedaría
attachInterrupt(0,ISR_EnA,RISING);

De nuevo creo que estas errado, el pin 0 es el pin 0 y el pin 1 es el pin 1, así que si pone el cable en el pin 1 y luego llama al pin cero no funcionara. Puedes ver una imagen donde se ven claramente la numeracion de los pines Aquí
Ademas si recomiendas usar el pin 0 y/o el pin 1 que son la comunicación serie, deverias de comentar que no puede usar Serial.print ni Serial.begin