Un sensor puede parar un motor?

Buen día/tarde a todos, antes que nada me presento, soy Matias de Argentina, estudiante de Mecatronica. Poseo un Arduino Mega y algunos componentes como pantalla Shield, sensor ultrasonico, y demas..
Estoy en la etapa final de la universidad y me piden que haga un proyecto, el cual accedí a mejorar una maquina de ensayos dieléctricos de la misma facultad.
Tengo un pequeño pero gran problema, y es que necesito detectar una gota de agua (con una solución al 0,1% que lo hace indiferente) y poder parar un motor paso a paso. Ahora bien, hago girar el motor para que caiga una gota y la detecte el sensor pero no pasa nada. Sin embargo, eh echo un pequeño programa que girando el engranaje del motor a mano la gota es detectada.
En que estoy fallando? No entiendo el porque cuando el motor empieza a girar el sensor deja de funcionar..
Dejo el codigo que echo y unas fotos por si alguien me puede dar una mano con esto, muchisimas gracias por su atención.
Atte, Matias

#include <Stepper.h>

const int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, 22,24,26,28);
int sensor=53;
long gotas=0;
int pulsador2=52;
int actualp2;
int anteriorp2=LOW;
long tiempop2 = 0; 
long debounce2 = 200;
int cont=0;
int estadop2=LOW;
int led=51;

void setup () {
  Serial.begin (9600);
  pinMode(sensor,INPUT);
  pinMode(pulsador2,INPUT);
  pinMode(led,OUTPUT);
  myStepper.setSpeed(15);
}

void loop () {


      actualp2=digitalRead(pulsador2);
       if (actualp2 == HIGH && anteriorp2 == LOW && millis() - tiempop2 > debounce2)      //ENCLAVAMIENTO DE PULSADOR
         {
       if (estadop2 == HIGH)                                                                     
           estadop2= LOW;
         else
          estadop2 = HIGH;
          tiempop2 = millis();  
        }
        
  
      
      
  if(estadop2==HIGH) {
    digitalWrite(led,HIGH);                                                                //SI LO PULSO UNA VEZ EL MOTOR GIRA Y SE PRENDE EL LED
    myStepper.step(-1);
    }
    else{
      digitalWrite(led,LOW);                                                               //PULSO EL BOTON NUEVAMENTE EL MOTOR SE DETIENE Y LED SE APAGA
      myStepper.step(0);
    }
  if(digitalRead(sensor)==LOW) {                                                           //CUENTA EL SENSOR
    Serial.println(cont);
    delay(10); 
    estadop2=LOW;
    cont++; 
    }
    
anteriorp2 = actualp2;

}

Hola Matías.
Encontré un pequeñísimo error en una llave, te pongo todo

#include <Stepper.h>

const int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, 22,24,26,28);


const byte led 			= 51;
const byte pulsador2	= 52;
const byte sensor 		= 53;

int actualp2;
long tiempop2 			= 0; 
long gotas 				= 0;
long debounce2 			= 200;

int cont 				= 0;
int estadop2			= LOW;
int  anteriorp2 		= LOW;

void setup () {
  Serial.begin (9600);
  pinMode(sensor,INPUT);
  pinMode(pulsador2,INPUT);
  pinMode(led,OUTPUT);
  myStepper.setSpeed(15);
}

void loop () {

    actualp2 = digitalRead(pulsador2);
    if (actualp2 == HIGH && anteriorp2 == LOW && (millis() - tiempop2 > debounce2) {     //ENCLAVAMIENTO DE PULSADOR
       if (estadop2 == HIGH)                                                                     
           estadop2= LOW;
       else { // ACA faltaba llave para que tomara a ambas sentencias.
          estadop2 = HIGH;
          tiempop2 = millis();  
       }
    }
       
  
    if (estadop2 == HIGH) {
       digitalWrite(led,HIGH);                                                                //SI LO PULSO UNA VEZ EL MOTOR GIRA Y SE PRENDE EL LED
       myStepper.step(-1);
    }
    else {
       digitalWrite(led,LOW);                                                               //PULSO EL BOTON NUEVAMENTE EL MOTOR SE DETIENE Y LED SE APAGA
       myStepper.step(0);
    }

	if (digitalRead(sensor) == LOW) {                                                           //CUENTA EL SENSOR
	   Serial.println(cont);
	   delay(10); 
	   estadop2=LOW;
	   cont++; 
    }
	anteriorp2 = actualp2;
}

Es como se espera que funcione. Cuando se llama a a una subrrutina, ya sea del programa o libreria, hasta que esta no se completa no devuelve el control al punto de llamada . En tu caso cuando llamas a myStepper.step() no puede medir mientras esta girando. La solución pasa por manejar el sensor como una interrupción.
Saludos.

Muchísimas gracias por el aporte PeterKantTropus y surbyte. Como bien dijiste Peter, terminé manejando el sensor como una interrupción, pero también cambie de emisor y receptor para mejorar el punto de lectura.

Nuevamente les vuelvo a agradecer ya que me sirvió de ayuda!

Saludos,
Matias