#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
//U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); //Arduino oled
U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ 22, /* data=*/ 21, /* reset=*/ U8X8_PIN_NONE); //ESP32 oled
#define THINGER_SERIAL_DEBUG
#include <ThingerESP32.h>
#define USERNAME "ugargolsunilkumar"
#define DEVICE_ID "ANALOG_CHART"
#define DEVICE_CREDENTIAL "123456789"
#define SSID "Wokwi-GUEST"
#define SSID_PASSWORD ""
// #define SSID "sunil"
// #define SSID_PASSWORD "7899132595"
ThingerESP32 thing(USERNAME, DEVICE_ID, DEVICE_CREDENTIAL);
#define sensorPower 35
#define sensorPin 33
// Value for storing water level
int val = 0;
// put your setup code here, to run once:
void setup() {
u8g2.begin(); //OLED Display Intialiazation
Serial.begin(115200);
//Water Sensor Setup // Set 35 as an OUTPUT
pinMode(sensorPower, OUTPUT);
// Set to LOW so no power flows through the sensor
digitalWrite(sensorPower, LOW);
pinMode(5, OUTPUT);// Red
pinMode(16, OUTPUT);//Blue
pinMode(17, OUTPUT);// Green
thing.add_wifi(SSID,SSID_PASSWORD);
thing["abcd"] >> [](pson& out)
{
out=val;
};
}
///////////////RGB
void orange(){
analogWrite(5, 255);// red 255, 165, 0
analogWrite(16, 0);// Blue 0
analogWrite(17, 165);// green 165
}
void brown(){
analogWrite(5, 150);// red 150
analogWrite(16, 0);// Blue 0
analogWrite(17, 75);// green 75
}
void green(){
analogWrite(5, 0);// red 0
analogWrite(16, 0);// Blue 0
analogWrite(17, 255);// green 255
}
void blue(){
analogWrite(5, 0);// red 0
analogWrite(16, 200);// Blue 255
analogWrite(17, 0);// green
}
void white(){
analogWrite(5, 255);// red 0
analogWrite(16, 255);// Blue 255
analogWrite(17, 255);// green
}
////////////////////////////////////////////////////////////////////////////////////
void oled_display(const char* msg){
u8g2.clearBuffer(); // clear the internal memory
u8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable font
// //u8g2.drawStr(5,10,"Smart Water Tank");
// u8g2.drawStr(5,30,msg); // write something to the internal memory
// u8g2.sendBuffer();
u8g2.firstPage();
do {
u8g2.drawStr(5,10,"Smart Water Tank");
u8g2.drawStr(5,30,msg);
} while (u8g2.nextPage());
//Delay before repeating the loop.
delay(50);
}
//This is a function used to get the reading
int readSensor() {
digitalWrite(sensorPower, HIGH); // Turn the sensor ON
delay(10); // wait 10 milliseconds
val = analogRead(sensorPin); // Read the analog value form sensor
digitalWrite(sensorPower, LOW); // Turn the sensor OFF
return val; // send current reading
}
void loop() {
// put your main code here, to run repeatedly:
thing.handle();
//get the reading from the function below and print it
int level = readSensor();
Serial.print("Water level: ");
Serial.println(level);
//delay(1000);
if (level < 174) {
u8g2.clearBuffer();
orange();
Serial.println(" Tank is Full");
oled_display("Tank is Full ");
delay(100);
}
else if (level < 348) {
u8g2.clearBuffer();
brown();
Serial.println("Tank is 75% Filled ");
oled_display("Tank is 75% Filled ");
delay(100);
}
else if (level < 525) {
u8g2.clearBuffer();
green();
Serial.println("Tank is 50% Filled");
oled_display("Tank is 50% Filled ");
delay(100);
}
else if (level < 700) {
u8g2.clearBuffer();
blue();
Serial.println("Tank is 25% Filled ");
oled_display("Tank is 25% Filled ");
delay(100);
}
else {
u8g2.clearBuffer();
white();
Serial.println("Tank is Empty ");
oled_display("Tank is Empty ");
delay(100);
}
delay(100); // Wait for 100 millisecond(s)
}