Problema con while


buenas tardes todos! vengo por aqui saltearme una duda aver si pueden ayudarme, estoy iniciando en esto de la programacion en arduino haciendo un auto controlado por bt, el auto se mueve mediante botones, enciende luces y puede seguir funcionando.. ahora el problema es cuando yo le digo que con 'x' tiene que hacer tal funcion la cumple, pero me es imposible volver salir, que estoy haciendo mal? desde ya muchas gracias todos!


code: [select]
int izqa = 5;
int izqb = 6;
int dera = 10;
int derb = 9;
int ledfront = 13;
int ledback = 11;
int corneta = 3;

int vel = 210;            // velocidad de los motores (0-255)
int vel2 = 105;            // velocidad de los motores (0-255)
int estado = 'u';         // inicia detenido

int velocidadmotor1 = 12; // ena - pwm
int velocidadmotor2 = 8; // enb

int infrapin = 4; // izquierdo - pin del infrarrojos utilizado como entrada digital
int infrapin1=2; // derecho
int valorinfra = 0; // valor inicial de la lectura digital del infrarrojos
int valorinfra1 = 0;


void setup()  {
 serial.begin(9600);    // inicia el puerto serial para comunicacion con el bluetooth
 pinmode(dera, output);
 pinmode(derb, output);
 pinmode(izqa, output);
 pinmode(izqb, output);
 pinmode(ledfront, output);
 pinmode(ledback, output);
 pinmode(corneta, output);
pinmode(infrapin, input);
pinmode(infrapin1, input);
pinmode(velocidadmotor1, output);
pinmode(velocidadmotor2, output);

analogwrite(velocidadmotor1, 255); //motor izquierdo pwm
analogwrite(velocidadmotor2, 255); //motor derecho pwm

digitalwrite(izqa, low);
digitalwrite(izqb, low);
digitalwrite(dera, low);
digitalwrite(derb, low);
}

void loop()  {

 
 if(serial.available()>0){        // lee el bluetooth y almacena en estado
     estado = serial.read();
 }
 if(estado=='f'){           // boton desplazar al frente
     analogwrite(derb, 0);    
     analogwrite(izqb, 0);
     analogwrite(dera, vel);  
     analogwrite(izqa, vel);  
}
 if(estado=='i'){           // boton desplazar diagonal izquierda
     analogwrite(derb, 0);    
     analogwrite(izqb, 0);
     analogwrite(dera, vel);  
     analogwrite(izqa, vel2);  
}
 if(estado=='g'){           // boton desplazar diagonal derecha
     analogwrite(derb, 0);    
     analogwrite(izqb, 0);
     analogwrite(dera, vel2);  
     analogwrite(izqa, vel);    
 }
 if(estado=='l'){          // boton izq
     analogwrite(derb, 0);    
     analogwrite(izqb, 0);
     analogwrite(dera, 0);  
     analogwrite(izqa, vel);      
 }
 if(estado=='s'){         // boton parar
     analogwrite(derb, 0);    
     analogwrite(izqb, 0);
     analogwrite(dera, 0);    
     analogwrite(izqa, 0);
 }
 if(estado=='r'){          // boton der
      analogwrite(derb, 0);    
      analogwrite(izqb, 0);
      analogwrite(izqa, 0);
      analogwrite(dera, vel);  
 }
 
 if(estado=='b'){          // boton reversa
      analogwrite(dera, 0);    
      analogwrite(izqa, 0);
      analogwrite(derb, vel);  
      analogwrite(izqb, vel);    
 }
 
 if(estado=='h'){          // boton reversa diagonal derecha
      analogwrite(dera, 0);    
      analogwrite(izqa, 0);
      analogwrite(derb, vel2);  
      analogwrite(izqb, vel);  
 }
 
 if(estado=='j'){          // boton reversa diagonal izquierda
      analogwrite(dera, 0);    
      analogwrite(izqa, 0);
      analogwrite(derb, vel);  
      analogwrite(izqb, vel2);
 }
   if(estado=='w'){          // luces delanteras encendidas
      digitalwrite(ledfront, high);
 }
   if(estado=='w'){          // luces delanteras apagadas
      digitalwrite(ledfront, low);
 }    
   if(estado=='u'){          // luces traseras encendidas
      digitalwrite(ledback, high);
 }
   if(estado=='u'){          // luces traseras apagadas
      digitalwrite(ledback, low);
 }
     if(estado=='v'){          // corneta on
      digitalwrite(corneta, high);
 }
   if(estado=='v'){          // corneta off
      digitalwrite(corneta, low);
 }
 if (estado =='u'){          // boton on se mueve sensando distancia

 }
 if  (estado=='d'){          // boton off, detiene los motores no hace nada
 }
 

if (estado=='x') {

while (estado=='x') {
 
 valorinfra = digitalread(infrapin); // valor entrada que lee el infrarrojo izquierdo
valorinfra1 = digitalread(infrapin1); // valor entrada que lee el infrarrojo derecho



 if(valorinfra == 0 && valorinfra1 == 0){ // hacia delante

digitalwrite(izqa, high);
digitalwrite(dera, high);
delay(0);
digitalwrite(izqa, low);
digitalwrite(dera,low);
delay(0);

}
if(valorinfra == 0 && valorinfra1 == 1){ // gira hacia la derecha
digitalwrite(izqa, low);
digitalwrite(dera,low);
delay(0);
digitalwrite(izqa, high);
digitalwrite(dera,low);
delay(0);

}
if(valorinfra == 1 && valorinfra1 == 0){ // gira hacia la izquierda
digitalwrite(izqa,low);
digitalwrite(dera, low);
delay(0);
digitalwrite(izqa,low);
digitalwrite(dera, high);
delay(0);

}
if(valorinfra == 1 && valorinfra1 == 1){ // stop

digitalwrite(izqa, low);
digitalwrite(izqb, low);
digitalwrite(derb, low);
digitalwrite(dera, low);
break;

}
}
}

}

lee las normas del foro
luego ve more (abajo la derecha), click, luego modify y estas en modo edicion.
si tienes que editar un código -> selecciona todo el código y click en </> arriba del emoticon.
si tienes que editar un enlace -> selecciona el enlace. copialo al portapapeles. click en el eslabón (ver abajo) y sigue los pasos que habras visto al leer las normas. 




Arduino Forum > International > Español > Software (Moderators: surbyte, Hector_A) > Problema con while


arduino

Comments

Popular posts from this blog

Flip address is out of range arduino uno r3

Arduino Uno not uploading

Indesign and MathType fonts