es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Bucle Temporizador de Arduino

Estoy escribiendo código para mi Arduino que muestra “Temporizador (cuenta de 1-100)” y luego muestra “Interrupciones: b” (donde b actúa como marcador de posición para cuántas veces cíclica). Cuenta hasta 100 y luego imprime mi otra declaración, pero no cicla y mi valor b sigue aumentando. ¿Dónde estoy equivocado?

void loop() {

int a = 0;
int b = 0;

     if(a != 100){

      lcd.setCursor(0,0);
      lcd.print("Temporizador");
      lcd.print("");
      a++;
      lcd.print(a); 
      delay(10);
      lcd.clear();

    }
    else{
//
      b++;
      lcd.print("Interrupciones:");

      lcd.print(b);
      delay(1000);
      lcd.clear();

//      
//   
   }
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    En el código dado, el valor de ‘a’ se inicializa a 0 en cada iteración del bucle, lo que significa que nunca alcanzará el valor de 100. Esto se debe a que la variable solo es local a la función loop() y se destruye una vez que la función loop() finaliza su ejecución. Para solucionar esto, la variable debe declararse fuera de la función loop().

    Además, no hay ningún código para salir del bucle una vez que el valor de ‘a’ alcanza 100. Sin esto, el bucle continuará indefinidamente y seguirá incrementando el valor de ‘b’. Para solucionar esto, agregue una declaración para salir del bucle después de que el valor de ‘a’ alcance 100.

    Una posible solución podría ser:

    int a = 0;
    int b = 0;
    
    void loop() {
        if (a < 100) {
            lcd.setCursor(0, 0);
            lcd.print("Temporizador: ");
            lcd.print(a + 1);
            a++;
            delay(10);
            lcd.clear();
        } else {
            b++;
            lcd.setCursor(0, 0);
            lcd.print("Interrupciones: ");
            lcd.print(b);
            delay(1000);
            lcd.clear();
            a = 0; // resetear el valor de 'a' para comenzar el bucle de nuevo
        }
    }
    

Comments are closed.