Estrutura switch case

Olá,

Mas isso já acontece no teu código. Estás a usar a variável "estado" para selecionar o próximo estado que corresponde a um determinado "case".

No estado 1 manténs o mesmo estado ou seleccionas o estado 200, dependendo da média de humidade obtida. Dizes que queres ir do estado 1 para o estado 3, no entanto não existe esse estado 3? Não parece fazer sentido :confused: . Também não existe estado 12... Para quê ir do estado 3 para o 12 se ambos não existem? Primeiro tens de fazer um case para o 3 e outro para o 12. Depois é seleccionar esses estados dependendo de uma determinada condição noutro estado... Algo como o já está a ser feito no estado 1...

Suponho que te referes ao código do "case" em que "estado==2"? Este código nunca é executado porque em nenhum outro estado é seleccionado o "estado" 2...

Neste "case" em que "estado==2" parece haver um erro na situação em que "leituraSensor > 500". A condição "(tempoAtual - tempoAnterior >= 5000)" só é verdadeira a primeira vez quando "tempoAnterior" é zero. Depois "tempoAnterior" é sempre maior que o "tempoActual". Tens de actualizar o "tempoActual" e não o "tempoAnterior":

    tempoAtual = millis();
    tempoAnterior = tempoAtual; <------ Inicializa o tempoAnterior
    ...
    
    if (leituraSensor > 500) {
      Serial.println("aguardando fluxo de água...");
      digitalWrite(pinoRele, LOW);

      //-- tempo(15s) do while para a água chegar até o sensor de água---

      while (tempoAtual - tempoAnterior >= 5000) { // tempo de 5s para teste
        if (leituraSensor < 500) {
          digitalWrite(pinoRele, LOW); //o pino já esta ligado antes desse comando...
          estado = 20; //5minutos de irrigação
          tempoAnterior = millis(); <------ Devias actualizar o tempoActual?
          break;
        }
        if (leituraSensor > 500) {
          digitalWrite(pinoRele, HIGH);
          estado = 200; // tempo de reinicio da irrigação
          tempoAnterior = millis(); <------ Devias actualizar o tempoActual?
          break;
        }
      }
    }