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.

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
Post a Comment