(deleted)
Hi,
El problema que no pones la variable conta = 0 al principio del loop. Si no el sigue contando con los valores despues del 10.
int Conta = 0; //Declaro variable para contador
//********************************************
void setup() {
Serial.begin(9600);
}
//********************************************
void loop() {
Conta = 0;
do {
Serial.println(Conta); //Imprimo Conta
Conta++;
} //Sumo 1
while (Conta < 10); //Cuando llegue a 10 debe parar
delay(1000);
}
//*********************************************
Hi,
Yo corro el sketch y cuenta hasta 10 y se sale del do/while.Tu corristes el sketch con la variable conta = 0 al principio del do/while. Si lo corres debe contar hasta 10 y debe salirse del do/while y debe volver a contar de 0 a 10. Posiblemente estoy entendiendo tu problema de otra forma diferente a como tu explica el problema. Segun yo entiendo tu quires contar hasta diez y salirte del do/while. No.
El problema es que no has comprendido bien como funciona el do-While. En este bucle siempre se ejecuta lo que está antes del while por lo menos una vez, entonces cuando el contador llega a nueve sale del while (como debe ser) pero como lo tienes dentro del loop, se repite la instruccion y suma uno al contador y sale del while y el ciclo se repite.
Te dejo abajo dos codigos para que entiendas un poco mejor lo que hablo.
int Conta = 0; //Declaro variable para contador
void setup() {
Serial.begin(9600);
do {
Serial.println(Conta); //Imprimo Conta
Conta++; //Sumo 1
}
while (Conta < 10); //Cuando llegue a 10 debe parar
}
void loop() {
}
En el código anterior se cumplirá la función que quieres realizar porque el void setup solo se ejecuta una vez y no entra en bucle.
Ahora en el siguiente código mira como el do-while funciona como te expliqué arriba
int Conta = 0; //Declaro variable para contador
void setup() {
Serial.begin(9600);
Serial.println("iniciando void loop");
}
void loop() {
do {
Serial.println(Conta); //Imprimo Conta
Conta++; //Sumo 1
}
while (Conta < 10); //Cuando llegue a 10 debe parar
Serial.println("Salimos del bucle \n");
delay(1000); //Puse este delay para que se aprecie bien la salida del bucle
Serial.println("Iniciando de nuevo el loop");
}
Ahora veras como se imprimen rápidamente los numeros del 0 al 9 porqué se cumple la condición del while y después suma solo uno a contador porque es lo que está dentro del do y sale del bucle ya que el while no se cumple, despues espera el retardo de un segundo para repetirse el bucle y seguir sumando de uno en uno .
Espero se entienda lo que traté de explicarte y te sirva para aclararte el panorama, si tienes duda pregunta de nuevo
Hi
Yo entiendo como trabaja el do /while pero en la forma que esta haciendolo te va a correr una vez y la segunda vez va seguir contando despues de contar mas de 10 va a seguir incrementando la variable conta., Despues va al looop cuenta una vez mas y se sale del loop asi sucecivamente y no te va a parar de contar. Para que cuente hasta diez o lo que quiras contar debes de condicionar la variable conta a zero antes de empezar el do/while. Posiblemente yo no estoy entendiendo que es lo que quires hacer con el contador.
Basicamente eso es lo que explica @RIG. Exactamente lo mismo que dices tu @tauro0221, pero intentando que quien lo vea y comprenda sea @CarlosCerro.