That’s my code.
#include <Arduino.h>
//Blynk//
#include <UIPEthernet.h>
#include <BlynkSimpleUIPEthernet.h>
BlynkTimer timer;
//Ethernet//
const byte arduino_mac[] = {0xA8,0x61,0x0A,0xFE,0xFE,0xED};
IPAddress server_ip (188,166,206, 43);
IPAddress arduino_ip (192,168, 68,102);
IPAddress dns_ip (192,168, 68, 1);
IPAddress gateway_ip (192,168, 68, 1);
IPAddress subnet_mask(255,255,255, 0);
//OneWire//
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire(21);
DallasTemperature sensors(&oneWire);
DeviceAddress Thermometer = {0x28, 0x3C, 0x58, 0x77, 0x91, 0x0B, 0x02, 0x17};
//Sonar//
#include <NewPing.h>
NewPing sonar(14, 16, 142);
//Filter's//
#include <MedianFilter.h>
MedianFilter Up_Input(25, 0);
#include <SimpleKalmanFilter.h>
SimpleKalmanFilter Up_Filter(2, 2, 0.1);
//Variable's//
struct SONAR_DATA {
float uS, raw, litre, change, prev;
} up;
float tempC;
byte reconnect = 0;
bool ledState = LOW;
bool Connected = false;
//Led's//
#define led_check 10
#define blynk_server_green 11
#define blynk_server_red 12
void Ethernet_setup() {
if (reconnect == 0) {
Ethernet.begin(arduino_mac,arduino_ip,dns_ip,gateway_ip,subnet_mask);
}
Connected = Blynk.connect();
reconnect++;
if (reconnect == 5) {
Blynk.disconnect();
reconnect = 0;
}
}
void CheckConnection() {
if (!Connected) {
Ethernet_setup();
}
}
void Sonar() {
if (Connected) {
up.uS = Up_Input.in(sonar.ping());
up.raw = Up_Filter.updateEstimate(up.uS/57.0);
up.raw = (142-up.raw)/1.21;
up.raw = constrain(up.raw, 0, 100);
up.litre = up.raw*20;
}
}
void Change() {
if (Connected) {
up.change = up.litre - up.prev;
up.prev = up.litre;
}
}
void TimerEvent() {
if (Connected) {
if (up.uS != 0) {
Blynk.virtualWrite(V1, up.raw);
Blynk.virtualWrite(V2, (int)up.litre);
Blynk.virtualWrite(V3, up.change);
}
if (tempC >= -10) {
Blynk.virtualWrite(V4, tempC);
}
}
}
void Temperature() {
if (Connected) {
sensors.requestTemperatures();
tempC = sensors.getTempC(Thermometer);
}
}
BLYNK_CONNECTED() {
Blynk.syncAll();
}
void Arduino_status() {
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}
digitalWrite(led_check, ledState);
digitalWrite(blynk_server_red, Connected?LOW:HIGH);
digitalWrite(blynk_server_green, Connected?HIGH:LOW);
}
void setup() {
byte pin[4] = {10,11,12,6}; //10,11,12 led
for (uint8_t i=0; i<4; i++) {
pinMode(pin[i],OUTPUT);
} digitalWrite(pin[3],HIGH);
Blynk.config(auth, server_ip, 8080);
Ethernet_setup();
sensors.begin();
sensors.setResolution(Thermometer,10);
timer.setInterval(100L, Sonar);
timer.setInterval(60*1000L, Change);
timer.setInterval(1000L, Temperature);
timer.setInterval(2000L, TimerEvent);
timer.setInterval(1000L, Arduino_status);
timer.setInterval(60*1000L, CheckConnection);
}
void loop() {
Connected = Blynk.connected();
if (Connected) {
Blynk.run();
}
timer.run();
}