While y una inquietud de logica

Hola, para salir del bucle While no entiendo porque lo hace cuando x=8 or y=2 si el simbolo
me esta indicando que se interrumpe While cuando x=8 and y=2. Seguramente la estoy pifiando en algo, logicamente!
(y cuando uso or funciona como and)

int x;
int y;

void setup() {
  
  Serial.begin(9600);
  randomSeed(analogRead(0));

}

void loop() {

while (x !=8 && y !=2) { 
 
x = random(1,10);
delay(50);       
y = random(1,10);  
Serial.print(x);   
Serial.println(y);

}

}

Otra preguntita: cuando, como en este caso, uso randomSeed(analogRead(0)) esto anula el uso "fisico" del pin analogico 0.

Gracias.

Tal y como tienes programado el bucle while, va a ejecutarse cuando x es distinto de 8 y y es distinto de 2.

De tal modo que para que el bucle se "rompa" es necesario que x=8 o y =2, es logica. Si tu tienes x!=8 and y!=2 negado el equivalente es un x=8 or y=2. Si tu lo que quieres es que rompa el bucle cuando x=8 and y =2 es tan facil como que declares el bucle asi:

while(!(x==8 && y==2))
{
}

Prueba y me dices! :wink:

En cuanto al randomSeed, no estoy seguro al 100% pero entiendo que si, que anulas el poder tomar datos por ese pin.

Un saludo!!

Hola,

hypernovat:
Otra preguntita: cuando, como en este caso, uso randomSeed(analogRead(0)) esto anula el uso "fisico" del pin analogico 0.

No anulas es uso del pin, lo que se aconseja es que randomSeed se lea desde un pin analógico sin conectar. ¿Por qué? un pin analógico sin conectar no está fijo en un valor, tiene ruido, cosa que viene muy bien para que random genere los números aleatorios.

Complementando, y a referencia de lo que te puso Danicap, si lo que quieres es un bucle while que salga cuando x = 8 e y = 2, entonces debería ser:

while  (x != 8 || y != 2)
{
...
}

Eso dice que ejecute lo que está dentro del while mientras x sea diferente de 8 o y sea diferente de 2, requiriendo ambas condiciones para salir.

Saludos y suerte con ese código!

msoffredi:
requiriendo ambas condiciones para salir.

Ahi esta, eso es.
Muchas gracias a los tres.
Saludos!