Problemas IF dentro de While o While dentro de IF

Buenos días,

Estoy trabajando en un proyecto en donde requiero que al ingresar el valor "1" en el Serial Monitor inicie una secuencia de IF que permite realizar el conteo de veces que los sensores cumplan unas condiciones y al ingresar el valor "0" concluya la secuencia IF. Me he topado con dos escenarios:

  • El primero me permite iniciar la secuencia IF y realiza el conteo cada vez que los sensores detecten algo, pero no me acepta el valor "0" en el Serial Monitor para terminar la secuencia.
  • El segundo tambien me permite iniciar la secuencia IF, pero solo deja que los sensores detecten algo una sola vez y si puedo salir de la secuencia IF al ingresar el valor "0" en el Serial Monitor.

Podrian apoyarme revisando mi codigo para ver si existe algun problema:

(codigo del primer escenario)

#define beginled 13
int count_a = 0;
int count_b = 0;
int count;

void setup() {

  Serial.begin (9600); 
  pinMode(beginled, OUTPUT);
  Serial.println("Ingrese 1 para iniciar."); 
  
}

void loop() {
  
  while (Serial.available() == 0){

  }
  if (Serial.available() > 0){
      input = Serial.read();
      digitalWrite(13, HIGH);
      Serial.println("Ingrese 0 para finalizar.");
      while (input == '1'){
        delay(3000);
        detection();
      }
  }
  else {
        Serial.print("Total de unidades ingresadas: ");
        count = count_a + count_b;
        Serial.println(count);
        delay (5000);
        digitalWrite(13, LOW);
        Serial.println("Ingrese 1 para iniciar."); 
      }
  }

void detection() {

//Secuencia IF/else if/ else

}

Agradecere bastante su pronta ayuda.

Una solución rápida es que agregues

  if (Serial.available() > 0) input = Serial.read();

inmediatamente después de la llamada a detection() sino input no cambia nunca y queda en el while() indefinidamente.

Ojo con los delays, así como están solo va a hacer lecturas cada 3 segundos.

Saludos

input no esta definida. Error de @luisdeleon_ug.
Debes definir input como int

int input;

antes del setup()

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.