Hello guys, I have one little problem when a float variable (volumen) is equal to 2, its purpose is that once it is equal to 2, send a notification, reset the variable and make a digitalWrite. The fact is that it doesn’t do this when the variable is equal to 2, it simply keeps increasing its number ignoring the conditional if. The sensor is a YF-s201 flow sensor, I’m using the most recent Blynk library, it’s a ESP32 DevBoard, type server is Cloud. The device connect well to the Blynk App
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
BlynkTimer timer;
char auth[] = "xxxxx";
char ssid[] = "xxxxx";
char pass[] = "xxxxx";
const int electrovalvPin = 4;
int automaticState = LOW;
volatile int NumPulsos;
const int sensorPin= 27;
float factor_conversion=7.11;
float volumen=0;
long dt=0;
long t0=0;
byte sensorInterrupt = 0;
BLYNK_CONNECTED() {
Blynk.virtualWrite(V4, automaticState);
}
BLYNK_WRITE(V4) {
automaticState = param.asInt();
if (automaticState == HIGH) {
if (volumen == 2){ //----------Problem section------------
digitalWrite (electrovalvPin, LOW);
Blynk.notify(String("Tu planta ha sido regada a la cantidad de agua recomendada, Litros usados: ") + volumen + String("L"));
volumen = 0;
}
}
}
void ContarPulsos ()
{
NumPulsos++;
}
int ObtenerFrecuecia()
{
int frecuencia;
NumPulsos = 0;
interrupts();
delay(1000);
noInterrupts();
frecuencia=NumPulsos;
return frecuencia;
}
void sendSensor()
{
float frecuencia=ObtenerFrecuecia();
float caudal_L_m=frecuencia/factor_conversion;
dt=millis()-t0;
t0=millis();
volumen=volumen+(caudal_L_m/60)*(dt/1000);
Serial.print ("Caudal: ");
Serial.print (caudal_L_m,3);
Serial.print ("L/min\tVolumen: ");
Serial.print (volumen,3);
Serial.println (" L");
Blynk.virtualWrite(V6, caudal_L_m);
Blynk.virtualWrite(V7, volumen);
}
void setup()
{
Serial.begin(9600);
pinMode(sensorPin, INPUT);
pinMode(electrovalvPin, OUTPUT);
attachInterrupt(digitalPinToInterrupt(27), ContarPulsos,RISING);
t0=millis();
Blynk.begin(auth, ssid, pass);
timer.setInterval(1000L, sendSensor);
}
void loop()
{
Blynk.run();
timer.run();
}