No me funciona "while"

Buenas tardes, tengo problema con la accion “while” esta no sale del bucle.

digitalWrite(relay, HIGH);
        servomotor.write(50);
        while (sensorestestate == 0)
        {
          int sensorestestate = digitalRead(sensoreste);
          Serial.println(sensorestestate);
          delay(25);
        }
        digitalWrite(relay, LOW);
        servomotor.write(95);

mi idea es de que el “relay” se active hasta que el while cambie su valor de lectura “sensorestestate” de un cero a un uno… si es cero, seguira repitiendo el bucle que “no hay nada”, haciendo que el relay siga activado, y cuando el valor “sensorestestate” cambie a un 1, deje de accionar el while, continuando hacia la linea de abajo apagando el relay.
el problema es que lo pruebo, (por eso puse el serial.print) y me activa cuando esta en cero, y cuando el valor cambia a un uno sigue igual repitiendose el while. el cero o uno es un valor leido en funcion de un digitalread de un pin.
no se si me expresé bien.

Ya lo solucioné!

digitalWrite(relay, HIGH);
        servomotor.write(50);
        while (sensorestestate == 0)
        {
          int sensorestestate = digitalRead(sensoreste);
          Serial.println(sensorestestate);
          delay(25);
          if (sensorestestate == 1)
          {
            break;
          }
        }

si mal no me equivoco, necesitaba la variable break; if (sensorestestate == 1)

saludos

Si no te sale del ciclo, es porque digitalRead nunca logra leer LOW (0); en otras palabras, es problema de hardware y no de software.

Podrías, por favor, explicar a qué lo tienes conectado, y (de ser posible) un diagrama de conexiones?

Lucario448: Si no te sale del ciclo, es porque digitalRead nunca logra leer LOW (0); en otras palabras, es problema de hardware y no de software.

Podrías, por favor, explicar a qué lo tienes conectado, y (de ser posible) un diagrama de conexiones?

Gracias por su respuesta pero ya esta solucionado, era ese pedazo de código que me faltaba, al no tener mucho conocimiento sobre programación. Estaba conectado a un sensor magnético y a un servomotor 360°. el sensor se activaba cuando el servomotor "pasaba" por cierto punto y este se apagaba allí mismo.

No esta solucionado. Lo que hiciste fue entrar y salir con la misma condición opuesta. Hazle caso a Lucario. Tiene un problema de hardware. Nunca viste si el sensor cambia de estado. Haz un simple loop con Serial.print que te muestre las respuesta del sensor. algo asi

Serial.println(digitalRead(sensoreste)?"ON":"OFF");

Estimado, mediante el uso de Serial.print pude observar los cambios de estado del sensor, y si funciona. Mucho conocimiento sobre programación no tengo. pero se que al haber puesto esa condición esta funcionó a la perfeccion. Agradezco su ayuda Saludos

Que funcione no necesariamente significa que sea correcto. El problema de tu código es que estas definiendo 2 veces la variable sensorestestate, una antes del código que envías y otra dentro del ciclo while. Esto hace que el compilador tome las variables como distintas. La solución es trivial, debes quitar el int de delante de sensorestestate:

        digitalWrite(relay, HIGH);
        servomotor.write(50);
        while (sensorestestate == 0)
        {
          sensorestestate = digitalRead(sensoreste);
          Serial.println(sensorestestate);
          delay(25);
        }