Problema com o while

Estou desenvolvendo um programa para posicionar um embolo mecânico, não há necessidade de muita precisão, eu coloquei uma roda dentada em um eixo que gera 20 pulsos por volta e habilitei a seguinte interrupção:

attachInterrupt(digitalPinToInterrupt(2), encoder, CHANGE);

A ISR está assim:

void encoder(){
if(dir == 1)pulso ++; // Se o driver gira em um sentido incrementa variável
if(dir == 0)pulso --; // Se o driver gira em outro sentido decrementa variável
conta ++; // Esas são instruções apenas
if(conta == 10){ // para confimrar
digitalWrite(led, !digitalRead(led)); // que os pulsos chegam no pino 2
conta = 0; //
}
}

a variável dir eu a defino como "0" quando o driver faz o motor girar em um sentido e defino como "1" quando ele gira em outro sentido.

Quando eu faço:

while(pulso < x){
Serial.println(pulso);
}

O while funciona perfeito, mas se eu tirar o Serial.println() de dentro do while:

while(pulso < x){

}

Ele não funciona mais, eu não preciso ficar enviando nada de dentro do while, apenas quero que o programa espere até o embolo chegar em uma determinada posição de acordo com os pulsos enviados.

Alguém poderia me ajudar?

I guess you forgot to declare 'pulse' as 'volatile'.

    if (dir == 1) pulse ++; // If the driver rotates in one direction increment variable 
   if (dir == 0) pulse -; // If the driver rotates in another direction decrements [/ code]

Did you mean "pulse--;" instead of 'pulse -;'?

If 'dir' is either 0 or 1:
 [code]     if (dir) 
      pulse ++; // If the driver rotates in one direction increment variable 
    else
      pulse --;   // If the driver rotates in another direction decrements [/ code]