#include <WiFi.h>
#include "DHTesp.h"
#include "ThingSpeak.h"
#define PIN_TRIG 26
#define PIN_ECHO 25
#define LOWLED 18
#define MIDLED 19
#define HIGHLED 21
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2675402;
const char* myApiKey = "C7UTQGLXD7CZT727";
const char* server = "api.thingspeak.com";
float level = 0;
float percentage = 0;
WiFiClient client;
void setup() {
Serial.begin(115200);
pinMode(LOWLED, OUTPUT);
pinMode(MIDLED, OUTPUT);
pinMode(HIGHLED, OUTPUT);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
digitalWrite(LOWLED, HIGH);
digitalWrite(MIDLED, HIGH);
digitalWrite(HIGHLED, HIGH);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("WiFi not connected...");
}
Serial.println("WiFi connected!");
Serial.println("Local IP: " + String(WiFi.localIP()));
ThingSpeak.begin(client);
}
void loop() {
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
int duration = pulseIn(PIN_ECHO, HIGH);
level = 405.62- (duration / 58.0);
percentage = (level / 400.0) * 100;
Serial.print("level of tank: ");
Serial.println(level);
Serial.print("Percentage of tank filled: ");
Serial.println(percentage);
if (level < 100) {
digitalWrite(LOWLED, LOW);
digitalWrite(MIDLED, HIGH);
digitalWrite(HIGHLED, HIGH);
} else if (level >= 100 && level < 385) {
digitalWrite(LOWLED, HIGH);
digitalWrite(MIDLED, LOW);
digitalWrite(HIGHLED, HIGH);
} else if (level >= 385) {
digitalWrite(LOWLED, HIGH);
digitalWrite(MIDLED, HIGH);
digitalWrite(HIGHLED, LOW);
}
ThingSpeak.setField(1, percentage);
int responseCode = ThingSpeak.writeFields(myChannelNumber, myApiKey);
if (responseCode == 200) {
Serial.println("Data pushed successfully");
} else {
Serial.println("Push error: " + String(responseCode));
}
Serial.println("---");
delay(1000);
}