Зачем дважды подавать команду
pulseIn. Можно один раз измерить расстояние и уже в условии выполнить необходимые действия, например вот так:
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(5);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance= duration*0.034/2;
if (distance > 40) {
myStepper.step(stepsPerRevolution);
myStepper.setSpeed(25);
}
else if(distance > 30){
myStepper2.step(stepsPerRevolution1);
myStepper2.setSpeed(25);
}
}