// ---------------------------------------------------------------------------
// Example NewPing library sketch that does a ping about 20 times per second.
// ---------------------------------------------------------------------------
#define BLYNK_TEMPLATE_ID "TMPL55CY-F2bg"
#define BLYNK_TEMPLATE_NAME "Water Level Monitor System Web"
#define BLYNK_AUTH_TOKEN "TjqauA1Fb8RZ5adxpb6XbvymOQqslmjb"
#include <BlynkSimpleEsp32.h>
#include <NewPing.h>
#define UPPERTANK_TRIGGER_PIN 33 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define UPPERTANK_ECHO_PIN 33 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define LOWERTANK_TRIGGER_PIN 32 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define LOWERTANK_ECHO_PIN 32
#define MAX_DISTANCE 600 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
#define SOUND_SPEED 0.0343 //define sound speed in cm/uS
NewPing uppertank_sonar(UPPERTANK_TRIGGER_PIN, UPPERTANK_ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
NewPing lowertank_sonar(LOWERTANK_TRIGGER_PIN, LOWERTANK_ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
float distanceCm;
long duration;
BlynkTimer LowerTankTimer;
BlynkTimer UpperTankTimer;
unsigned long curMillis;
static int Uprev, Ucurr;
static int Lprev, Lcurr;
void UpperTank_WLMS(){
Ucurr =millis();
Serial.print("****************************UpperTank_WLMS------curMillis=");
Serial.print(Ucurr);
Serial.print(", ");
Serial.println(Ucurr-Uprev);
Serial.print("Ping: ");
Serial.print(uppertank_sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
Serial.print("cm ");
Serial.print(uppertank_sonar.ping());
Serial.println("us");
Serial.print("PulseIn: ");
distanceCm = calculate_distance(UPPERTANK_TRIGGER_PIN, UPPERTANK_ECHO_PIN);
Serial.print(distanceCm);
Serial.print("cm ");
Serial.print(duration);
Serial.println("us");
Uprev= Ucurr;
}
void LowerTank_WLMS(){
Lcurr =millis();
Serial.print("----------------------------LowerTank_WLMS------curMillis=");
Serial.print(Lcurr);
Serial.print(", ");
Serial.println(Lcurr-Lprev);
Serial.print("Ping: ");
Serial.print(lowertank_sonar.ping_cm()); // Send ping, get distance in cm and print result (0 = outside set distance range)
Serial.print("cm ");
Serial.print(lowertank_sonar.ping());
Serial.println("us");
Serial.print("PulseIn: ");
distanceCm = calculate_distance(LOWERTANK_TRIGGER_PIN, LOWERTANK_ECHO_PIN);
Serial.print(distanceCm);
Serial.print("cm ");
Serial.print(duration);
Serial.println("us");
Lprev = Lcurr;
do{ Serial.println("inside LT while "); }while((millis() - Lcurr) <= 2);
}
void setup() {
Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.
UpperTankTimer.setInterval(1500L, UpperTank_WLMS);
LowerTankTimer.setInterval(1000L, LowerTank_WLMS);
}
void loop() {
curMillis = millis();
//delay(5); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.
#if 1
UpperTankTimer.run(); // run timer every second
#endif
#if 1
LowerTankTimer.run(); // run timer every second
#endif
}
float calculate_distance(int trigPin, int echoPin)
{
float distanceCm;
//Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
//Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
//Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
//Calculate the distance
distanceCm = duration * SOUND_SPEED / 2;
return distanceCm;
}