Necesito ayuda

Hola amigos del foro, e creado un código el cual me mide la humedad del suelo, estos valores del sensor de humedad del suelo son leídos en porcentaje, le doy una orden que al momento de llegar a el 40% de humedad me mande una notificación, el problema es que me notifica sin parar, solo necesito que me notifique una sola vez, que función aparte a delay() puedo utilizar, quiero que el código no se detenga y me siga mandando valores de humedad a blynk.

void loop()
{

  Blynk.run();
  timer.run();

  // Leemos el valor de la salida analógica del sensor capacitivo, conectada al pin analógico "A0"
 Valordelsensor = analogRead(AOUT);
 
  // Se calcula el porcentaje de humedad relativa teniendo en cuenta los dos límites
  porcentaje = map(Valordelsensor, WaterValue, AirValue, 100, 0);
  
  Blynk.virtualWrite(V2, porcentaje); 
  
  if(porcentaje < 0) porcentaje = 0; // Evita porcentajes negativos en la medida del sensor
 
  if(porcentaje > 100) porcentaje = 100; // Evita porcentajes negativos en la medida del sensor
 
  // Se presenta el porcentaje a través del monitor serie
  Serial.print("HUMEDAD: ");
  Serial.print(porcentaje);
  Serial.println("% HR");
 
  // Se presentan los mensajes, a través del monitor serie, dependiendo del porcentaje de humedad relativa
  if(porcentaje <= 40)
  {
    Serial.println("Suelo seco !!!");  
    Blynk.notify("Encender riego, el suelo esta seco ");
    
  }
  if(porcentaje > 40 && porcentaje <= 80)
  {
    Serial.println("Suelo humedo !!!");
  }
  if(porcentaje > 80)
  {
    Serial.println("Suelo con exceso de humedad !!!");
    Blynk.notify("Apagara riego, exceso de humedad ");
  }
 
}

Hola, bienvenido al foro, para lo de delay puedes remplazarlo con millis mira el ejemplo Entender millis y no morir en el intento
Para lo de que se envía el mensaje a cada rato puedes implementar una variable boleana la cual cambie de estado cuando se envié el mensaje, por ejemplo esto

if (porcentaje <= 40)
  {
    if (notificacionEnvida == false)
    {
      notificacionEnvida = true;
      Serial.println("Suelo seco !!!");
      Blynk.notify("Encender riego, el suelo esta seco ");
    }
  }

ahora el problema con esto es que hay que resetear la variable "notificacionEnvida" asignándole false, para que vuelva a notificar.
Esto lo podrías hacer de diferentes formas, por ejemplo que cuando exista un cambio en el valor del sensor con respecto a la lectura anterior en la que se envió el mensaje.
Siempre que el código no sea muy extenso postéalo utilizando las etiquetas correspondiente como ya lo hiciste, y si es muy largo adjunta el archivo del código, pero que sea completo. no solo partes ya no se sabe como declaraste las variables, además si utilizas librerías no te olvides de de poner de donde las encontraste, porque existe la posibilidad de que las librerías que nosotros disponemos sean diferentes a las que tu tengas.

Moderador:
En el título no debe usarse la palabra Ayuda. Edita!!
Coloca un título que refleje tu consulta.

Lee las Normas del foro

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