#define BLYNK_TEMPLATE_ID "TMPL3p-ew5lwh"
#define BLYNK_TEMPLATE_NAME "WATER LEVEL"
#define BLYNK_AUTH_TOKEN "Q3QilHPL4lmpCqbCw2Bc4GRRP4xOJPVL"
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
int emptyTankDistance = 70 ;
int fullTankDistance = 30 ;
int triggerPer = 10 ;
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <AceButton.h>
using namespace ace_button;
#define TRIGPIN 27
#define ECHOPIN 26
#define wifiLed 2
#define ButtonPin1 12
#define BuzzerPin 13
#define GreenLed 14
#define VPIN_BUTTON_1 V0
#define VPIN_BUTTON_2 V3
float duration;
float distance;
int waterLevelPer;
bool toggleBuzzer = HIGH;
char auth[] = BLYNK_AUTH_TOKEN;
BlynkTimer timer;
void checkBlynkStatus() {
bool isconnected = Blynk.connected();
if (isconnected == false) {
digitalWrite(wifiLed, LOW);
}
if (isconnected == true) {
digitalWrite(wifiLed, HIGH);
}
}
BLYNK_CONNECTED() {
Blynk.syncVirtual(VPIN_BUTTON_1);
Blynk.syncVirtual(VPIN_BUTTON_2);
}
void measureDistance(){
digitalWrite(TRIGPIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGPIN, HIGH);
delayMicroseconds(20);
digitalWrite(TRIGPIN, LOW);
duration = pulseIn(ECHOPIN, HIGH);
distance = ((duration / 2) * 0.343)/10;
if (distance > (fullTankDistance - 10) && distance < emptyTankDistance ){
waterLevelPer = map((int)distance ,emptyTankDistance, fullTankDistance, 0, 100);
Blynk.virtualWrite(VPIN_BUTTON_1, waterLevelPer);
Blynk.virtualWrite(VPIN_BUTTON_2, (String(distance) + " cm"));
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
if (waterLevelPer < 10){
int stateButton = digitalRead(ButtonPin1);
if (stateButton == 1)
{
digitalWrite(GreenLed, LOW);
}
digitalWrite(GreenLed, HIGH);
if (toggleBuzzer == HIGH){
digitalWrite(BuzzerPin, HIGH);
}
} else{
digitalWrite(GreenLed, LOW);
digitalWrite(BuzzerPin, LOW);
}
} else{
digitalWrite(GreenLed, LOW);
digitalWrite(BuzzerPin, LOW);
}
delay(100);
}
void setup() {
Serial.begin(9600);
pinMode(ECHOPIN, INPUT);
pinMode(TRIGPIN, OUTPUT);
pinMode(wifiLed, OUTPUT);
pinMode(GreenLed, OUTPUT);
pinMode(BuzzerPin, OUTPUT);
pinMode(ButtonPin1, INPUT);
digitalWrite(wifiLed, LOW);
Serial.print("Connectiong to WiFi");
WiFi.begin(ssid, pass);
while(WiFi.status() != WL_CONNECTED){
delay(100);
Serial.print(".");
}
Serial.println(" Connected! ");
timer.setInterval(2000L, checkBlynkStatus);
Blynk.config(auth);
delay(1000);
}
void loop() {
delay(100);
measureDistance();
delay(20);
Blynk.run();
timer.run();
}