lo statement "if" funziona con gli interrept?

SukkoPera:
No, posta il codice.

Eccolo. Le indicazioni delle sezioni mi servono in fase di per ricordarmi le righe di codice aggiunte da me per non fare confusione con quelle del codice copiato.
Dovrebbe azionare lo spostamento X per 1000 passi e fermarsi, invece va a fine corsa.

Lo so che è rudimentale ma è una prova.

//--------------sezione encoder ------------------
int encoderPin1 = 2;
int encoderPin2 = 3;
int encoderPinZero = 4;
int led = 5;
volatile int lastEncoded = 0;
volatile long encoderValue = 0;
long lastencoderValue = 0;
int lastMSB = 0;
int lastLSB = 0;
//-----------------sezione X----------------------
int AD = 9;
int CB = 8;
int passi = 1000;

 
void setup() {
  //--------------sezione encoder------------------
  Serial.begin (9600);
  pinMode(encoderPin1, INPUT);
  pinMode(encoderPin2, INPUT);
  pinMode(encoderPinZero, INPUT_PULLUP);
  attachInterrupt(0, updateEncoder, CHANGE);
  attachInterrupt(1, updateEncoder, CHANGE);
  //--------------sezione X------------------------
      pinMode(AD, OUTPUT);
      pinMode(CB, OUTPUT);
      pinMode(led, OUTPUT);
}
//--------------------sezione X----------------------
void sx(){
              
        digitalWrite(AD, LOW);
        delay(100);                         
        digitalWrite(CB, HIGH);               
}
void dx(){       
       
        digitalWrite(CB, LOW);
        delay(100);                         
        digitalWrite(AD, HIGH);
} 
void loop(){
       //-----------sezione encoder----------         

       Serial.print(encoderValue);
       Serial.print(" - ");
       Serial.println(passi);
          
       int val = digitalRead(encoderPinZero);
       if(val==LOW){encoderValue=0;}
       //-----------sezione x---------------
          
                    if(encoderValue < passi){
                    sx();
                    }    
                   
}
//----------------sezione encoder ------------------ 
void updateEncoder(){
  int MSB = digitalRead(encoderPin1); //MSB = most significant bit
  int LSB = digitalRead(encoderPin2); //LSB = least significant bit
 
  int encoded = (MSB << 1) |LSB; //converting the 2 pin value to single number
  int sum  = (lastEncoded << 2) | encoded; //adding it to the previous encoded value
 
  if(sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011) encoderValue ++;
  if(sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000) encoderValue --;
 
  lastEncoded = encoded; //store this value for next time
}