Go Down

Topic: Problema con && en un do... while (Read 1 time) previous topic - next topic

X-ELE

Tengo el siguiente codigo resumido....

Code: [Select]

// Software de Arduino Duemilanove - Control
// Revision 16-07-2011
// Version 1.01
....


....
void loop(){

  //Declaracion de variables
  int cond1 = 0;
   
  int tiempo_inicial = 0;
  int tiempo1_carril1 = 0;
  int tiempo2_carril1 = 0;
  int tiempo3_carril1 = 0;
  int tiempo1_carril2 = 0;
  int tiempo2_carril2 = 0;
  int tiempo3_carril2 = 0;
  int tiempo_actual = 0;
 
  int sensor11 = 0;
  int sensor21 = 0;
  int sensor12 = 0;
  int sensor13 = 0;
  int sensor22 = 0;
  int sensor23 = 0;
 
  digitalWrite(estado , LOW);
 
  //Verificar la señal de inicio desde el Mini
 
  do{
 
    if(digitalRead(inicio) == 1){
   
      cond1 = 1;
     
    }
    else{
   
      cond1 = 0;
     
    }
   
  }while(cond1 == 0);
 
  //Inicio de la cuenta
 
  tiempo_inicial = millis();
 
  //Registro y muestra de tiempos parciales y finales
  do{
 
...

...
    //Tiempo final - Carril 1
    if(digitalRead(final1) == HIGH){
      sensor13 = 1;
      tiempo_actual = millis();
      tiempo3_carril1 = tiempo_actual - tiempo_inicial;
      muestraTiempo(tiempo3_carril1 , 0);
     
    }
    else{
      sensor13 = 0;
    }
   
    //Tiempo final - Carril 2
    if(digitalRead(final2) == HIGH){
      sensor23 = 1;
      tiempo_actual = millis();
      tiempo3_carril2 = tiempo_actual - tiempo_inicial;
      muestraTiempo(tiempo3_carril2 , 1);
     
    }
    else{
      sensor23 = 0;
    }
 
...

...

  }while(sensor13 == 1 && sensor23 == 1 ); //Finaliza bucle cuando ambos autos finalizaron
 
  ROTURA:
 
  delay(30000); //Demora hasta que el sistema queda listo para un nuevo inicio
 
  digitalWrite(estado , HIGH);
 
 
}


}



haciendo pruebas encontre q el && dentro del do.. while no funciona correctamente, funciona mas como un ||

obviamente estoy cambiando la sintaxis a ver si funciona, pero alguien le paso algo similar?


Regata

Yo pondría entre parentésis los dos términos que compruebas si son iguales a 1 y en medio &&, quedando asi:

while((termino1==1) && (termino2==1));

curro92

#2
Oct 03, 2011, 04:30 pm Last Edit: Oct 03, 2011, 04:32 pm by curro92 Reason: 1
Hola,
Falta parte del código, y no lo puedo probar. De todas formas, creo que tienes una llave de cierre de más. ¿Te compila bien?
Code: [Select]

void loop()
{
 do{
 }while();
 
 do{
 }while();
 
 ROTURA:
}

} // <-----------------------


SrDonGato

la declaracion de variables hazla fuera del loop()

X-ELE


Yo pondría entre parentésis los dos términos que compruebas si son iguales a 1 y en medio &&, quedando asi:

while((termino1==1) && (termino2==1));


Lo probe no funciono ... :(


Hola,
Falta parte del código, y no lo puedo probar. De todas formas, creo que tienes una llave de cierre de más. ¿Te compila bien?
Code: [Select]

void loop()
{
 do{
 }while();
 
 do{
 }while();
 
 ROTURA:
}

} // <-----------------------




Si lo compila recorte parte del codigo por meros motivos de espacio, se ve q quedo una llave colgada...


la declaracion de variables hazla fuera del loop()



Esta hecha, pero luego necesito ecesito reiniciar las variables una vez q sale del do while

Gracias por las repsuestas estoy modificando para usar otro condicionador a ver que pasa

Go Up