Varias condiciones con While. [Resuelto]

¡Hola gente! Buenos días, tardes o noche.
Tengo problemas al hacer funcionar la función ‘‘while’’ y me gustaría recibir un poco de ayuda con su uso. Estoy haciendo una programación que en la que quiero hacer lo siguiente:

  • Deseo que mis variables S1 y S2 (Los cuales son unos sensores que me brindaran valores) cumplan varias condiciones para que se mantenga el ciclo dentro del while y cuando dejen de hacerlo realice lo que sigue de la programación. Ahora les muestro:
   int    S1=A0;                      //Sensor 1
   int    S2=A1;                      //Sensor 2

void setup() {
  }

void loop (){
     while ((S1>20 && S1<40) && (S2>20 && S2<40));{
     //Programacion para que haga X cosa
   }
    //Una vez que salga de el la función while, ejecuta una programación que haga Y cosa, continuando con la demas. 
}

El problema es que cuando lo hice en fisico no me funciona y he estado teniendo dificultad en arreglarlo, asi que espero que puedan ayudarme, por favor.

Muchas gracias por adelantado.

PD: Por cierto, debido a que necesito que siga esta condicion hasta que sea diferente, en este caso no puedo reemplazarlo con If porque no es de mucha ayuda para mi en lo que deseo hacer.

~-~SOLUCION: ~-~
Ahora mismo les dejo la programación de prueba que hice (Con su ayuda, claro) para que le sirva a alguien más si está utilizando dos o más condiciones con los pines analógicos (Conectando dos sensores CNY70).

  int    SC1=A0;                      //Sensor de color 1 CNY70
  int    SC2=A1;                      //Sensor de color 2 CNY70

void setup() {
  Serial.begin (9600);
  pinMode(13, OUTPUT);      
}

void loop (){
  Serial.print(analogRead(SC1));
  Serial.print(" ");
  Serial.println(analogRead(SC2)); //Los datos que me otorgan los CNY70 los puedo ver en el monitor
// serial y saber en qué rango está más o menos el color que necesito, en este caso el blanco.

while ((analogRead(SC1)>700 && analogRead(SC1)<900) && (analogRead(SC2)>700 && analogRead(SC2)<900)) { 
//En este caso las condiciones corresponden al rango en el que me detecta el color blanco.
digitalWrite(13, HIGH);}
digitalWrite(13, LOW);} //Se dejo de cumplir la condicion y el LED de prueba se apaga.

Gracias a todos por su atencion n.n

no acabo de entender tu planteamiento ,pero la funcion if se puede complementar con else : si se cumple condicion haz esto ,si no haz esto otro.

if (condicion){
// codigo
}
else{ 
// codigo que se ejecuta si la condicion no se cumple
}

el error es que pusiste un ; al final del while de modo que nunca podrá hacer algo entre llaves
reemplaza esto

while ((S1>20 && S1<40) && (S2>20 && S2<40));{
     //Programacion para que haga X cosa
   }

por esto

while ((S1>20 && S1<40) && (S2>20 && S2<40)) {
     //Programacion para que haga X cosa
    S1 = algo1;
    S2 = algo2:
   }

pero dentro los valores de S1 y S2 deben cambiar para que en algun momento no se cumpla y salga del while

UFA!!! todavía recuerdo las 2 horas que me costó hace unos días un punto y coma mal puesto, casualmente después de un while. Dos horas perdidas totalmente por una macanita.

¡Hola José! Como dije anteriormente descarte la función ‘‘If’’ porque en lo que quería hacer no me ayudaba mucho, sin embargo te agradezco mucho tus ganas de ayudarme. Me disculpo si no me di a entender bien n.n

¡Saludos Surbyte! Muchísimas gracias por esa corrección, se me fue la mano y ese pequeño error me echo a perder todo. Gracias a esto ya corrió y también porque corregí las condiciones.

Ahora mismo les dejo la programación de prueba que hice (Con su ayuda, claro) para que le sirva a alguien más si está utilizando dos o más condiciones con los pines analógicos.

  int    SC1=A0;                      //Sensor de color 1 CNY70
  int    SC2=A1;                      //Sensor de color 2 CNY70

void setup() {
  Serial.begin (9600);
  pinMode(13, OUTPUT);      
}

void loop (){
  Serial.print(analogRead(SC1));
  Serial.print(" ");
  Serial.println(analogRead(SC2)); //Los datos que me otorgan los CNY70 los puedo ver en el monitor
// serial y saber en qué rango está más o menos el color que necesito, en este caso el blanco.

while ((analogRead(SC1)>700 && analogRead(SC1)<900) && (analogRead(SC2)>700 && analogRead(SC2)<900)) { 
//En este caso las condiciones corresponden al rango en el que me detecta el color blanco.
digitalWrite(13, HIGH);}
digitalWrite(13, LOW);}

Edito mi primer post en brevedad y lo doy como solucionado n.n ¡Gracias de verdad!

Por nada!! Nos alegramos. Edita el título y ponle solucionado.