Condicional if, comunicacion serial y condicionales

hola buenas , subo acá un código para realizar lecturas condicionales
es decir no se vuelvan a repetir los bucles por es utilizo los condicionales , mi pregunta es porque no se ejecuta el condicional cuando lo lee ?, es decir al leer el primer bucle este trabaja bien pero no quiero se vuelva a repetir por eso coloco una variable de estado
alguien que pueda ayudarme.

String lectura;
int lecturadec;
int estado[1];

void setup() {
  Serial.begin(9600);
  while (!Serial) {
  }
  Serial.println(estado[1]);
  Serial.println(estado[0]);
}

void loop() {

  if (Serial.available()) {

    while (Serial.available() > 0) {
      estado[1] = 0;
      lectura = Serial.readString();
      lecturadec = lectura.toInt();
      //*****************************************************************************************************//
      /*                                    primero estado                                                   */
      //*****************************************************************************************************//
      if (estado[1] = 0 && lecturadec >= 10 && lecturadec <= 50) {
        delay(5);
        Serial.println("tu valor se encuentra en el rango de 10 a 50 ");
        Serial.println(lecturadec);
        //operacion numero 1
        estado[1] = 1;
        Serial.println(estado[1]);
        //*****************************************************************************************************//
        /*                                    segundo estado                                                   */
        //*****************************************************************************************************//
      }
      if (estado[1] == 1 && lecturadec > 51) {
        Serial.println("tu valor se encuentra de un rango mayo a 50 ");
        estado[1] = 0;
        Serial.println(estado[1]);
      }
      //*****************************************************************************************************//
    }
  }
}

este programa si almacenar estados funciona correctamente pero se repiten los bucles

String lectura;
int lecturadec;
int estado[1];

void setup() {
  Serial.begin(9600);
  while (!Serial) {
  }
  Serial.println(estado[1]);
  Serial.println(estado[0]);
}

void loop() {

  if (Serial.available()) {

    while (Serial.available() > 0) {
      estado[1] = 0;
      lectura = Serial.readString();
      lecturadec = lectura.toInt();
      //*****************************************************************************************************//
      /*                                    primero estado                                                   */
      //*****************************************************************************************************//
      if ( lecturadec >= 10 && lecturadec <= 50) {
        delay(5);
        Serial.println("tu valor se encuentra en el rango de 10 a 50 ");
        Serial.println(lecturadec);
        //operacion numero 1
        estado[1] = 1;
        Serial.println(estado[1]);
        //*****************************************************************************************************//
        /*                                    segundo estado                                                   */
        //*****************************************************************************************************//
      }
      if ( lecturadec > 51) {
        Serial.println("tu valor se encuentra de un rango mayo a 50 ");
        estado[1] = 0;
        Serial.println(estado[1]);
      }
      //*****************************************************************************************************//
    }
  }
}

ayuda ..

Este es el error

if (estado[1] = 0 && lecturadec >= 10 && lecturadec <= 50) {

debe ser

if (estado[1] == 0 && lecturadec >= 10 && lecturadec <= 50) {

ya lo intente pero parece que siguen los mismos problemas

a mi me funcionó en un NANO.
No entendí para que usas estado[1] cuando solo usas una única variable. Resulta hasta confuso seguirlo pero nada tiene que ver con el problema.

Leido : 20
tu valor se encuentra en el rango de 10 a 50 
20
Estado = 1
Leido : 21
tu valor se encuentra en el rango de 10 a 50 
21
Estado = 1
Leido : 45
tu valor se encuentra en el rango de 10 a 50 
45
Estado = 1
Leido : 60

Código :

String lectura;
int lecturadec;
int estado;

void setup() {
  Serial.begin(9600);
  while (!Serial) { }
  Serial.println(estado);
}

void loop() {

  if (Serial.available()) {

    while (Serial.available() > 0) {
      estado = 0;
      lectura = Serial.readString();
      lecturadec = lectura.toInt();
      Serial.println("Leido : " + String(lecturadec));
      //*****************************************************************************************************//
      /*                                    primero estado                                                   */
      //*****************************************************************************************************//
      if (estado == 0 && lecturadec >= 10 && lecturadec <= 50) {
          delay(5);
          Serial.println("tu valor se encuentra en el rango de 10 a 50 ");
          Serial.println(lecturadec);
          //operacion numero 1
          estado = 1;
          Serial.print("Estado = ");
          Serial.println(estado);
          //*****************************************************************************************************//
          /*                                    segundo estado                                                   */
          //*****************************************************************************************************//
      }
      if (estado == 1 && lecturadec > 51) {
          Serial.println("tu valor se encuentra de un rango mayo a 50 ");
          estado = 0;
          Serial.print("Estado = ");
          Serial.println(estado);
        
      }
      //*****************************************************************************************************//
    }
  }
}

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