I have timed my water pump program. when pin v5 is on the system will pump for 10 minutes. but I assume that if the system is out of power, it has pumped for 5 minutes and when it has power, it will pump for the remaining 5 minutes, what should I do?
thank you
this is my program.
#define BLYNK_TEMPLATE_ID "TMPLCJizVSSV"
#define BLYNK_DEVICE_NAME "DO AN"
#define BLYNK_FIRMWARE_VERSION "0.1.4"
#define BLYNK_PRINT Serial
#include <Arduino.h>
#include "BlynkEdgent.h"
#include <WiFi.h>
#include <DHT.h>
//#include <BlynkSimpleEsp32.h>
#include <SPI.h>
#include <Ethernet.h>
#include <TimeLib.h>
#include <WidgetRTC.h>
#include "Adafruit_Sensor.h"
#include "Wire.h"
#include "BH1750.h"
#include <EEPROM.h>
#define DHTPIN 14 // Chân DATA nối với chân IO14
#define DHTTYPE DHT22 // DHT 11
#define PS 19
#define Quat 18
#define Bom 5
#define TIME_PUMP_ON 15
//TIMER
#define READ_LUX_TM 10L //Đọc cảm biến ánh sáng
#define READ_AIR_DATA_TM 2L //Đọc DHT
#define DISPLAY_DATA_TM 10L //Gửi dữ liệu lên terminal
#define SEND_UP_DATA_TM 10L
//blynk&wifi
//char auth[] = "Qttg34ssA83i8Stt790skcqPl2RVvz2o";
//char ssid[] = "ESP";
//char password[] = "06092000";
BH1750 lightMeter;
DHT dht(DHTPIN, DHTTYPE); // Khởi tạo cảm biến
float t=0;
float h=0;
float lux=0;
// Biến lưu trạng thái bơm
boolean PSStatus = 0;
boolean QUATStatus = 0;
boolean BOMStatus = 0;
String currentDate;
String currentTime;
int count = 0;
SimpleTimer timer;
WidgetRTC rtc;
WidgetLED led1(V0); // đèn báo kết nối
WidgetLED SP(V2); // Đèn trạng thái phun sương
WidgetLED FAN(V3); // Đèn trạng thái quạt
WidgetLED BUMP(V4); // Đèn trạng thái bơm
void readsensor();
void printData();
void startTimers();
void sendUptime();
void clockDisplay();
void turnPumpOn();
void setup() {
// Khởi tạo cổng serial baud 115200
Serial.begin(115200);
EEPROM.begin(512);
count = EEPROM.read(0);
pinMode(5, OUTPUT);
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
//Blynk.begin(auth, ssid, password);
BlynkEdgent.begin();
setSyncInterval(10 * 60);
WiFi.mode(WIFI_STA);
Serial.println("hello!");
delay(2000);
// Bắt đầu đọc dữ liệu
Wire.begin();
dht.begin();
lightMeter.begin();
readsensor();
startTimers();
sendUptime();
clockDisplay();
turnPumpOn();
SP.off();
FAN.off();
BUMP.off();
}
void loop() {
timer.run();
//Blynk.run();
BlynkEdgent.run();
if(currentTime[hour()] == '9')
{ count =0;
}
}
BLYNK_CONNECTED() {
// Synchronize time on connection
Blynk.syncVirtual(V5);
Blynk.syncVirtual(V6);
Blynk.syncVirtual(V101);
Blynk.syncVirtual(V100);
rtc.begin();
}
BLYNK_WRITE(5) // khai báo phím ảo trên app blynk
{
int i = param.asInt();
if (i == 1)
{
count++;
EEPROM.write(0, count);
EEPROM.commit();
Serial.println("State saved in flash memory");
Blynk.virtualWrite(V101,count);
if (count>=3){
Blynk. logEvent("canhbao","Bạn đang tưới cây quá 2 lần");
}
SP.on();
digitalWrite(PS, HIGH);
timer.setTimeout( TIME_PUMP_ON * 1000, turnPumpOn);
}
else {
SP.off();
digitalWrite(PS, LOW);
}
}
BLYNK_WRITE(6) // Điều khiển đèn
{
int i = param.asInt();
if (i == 1)
{
FAN.on();
digitalWrite(Quat, HIGH);
Blynk.virtualWrite(V8,"ON FAN");
}
else {
FAN.off();
digitalWrite(Quat, LOW);
Blynk.virtualWrite(V8,"OFF FAN");
}
}
BLYNK_WRITE(V100){
int i = param.asInt();
if (i == 1){
count=0;
EEPROM.write(0, count);
EEPROM.commit();
Serial.println("State saved in flash memory");
Blynk.virtualWrite(V101,count);
Blynk.virtualWrite(V8,"RESET DONE");
}
}
void readsensor(){
h = dht.readHumidity(); // Đọc giá trị nhiệt độ C (mặc định)
t = dht.readTemperature(); // Đọc giá trị nhiệt độ F(isFahrenheit = true)
lux = lightMeter.readLightLevel(); // đọc giá trị ánh sáng
}
void printData(){
// IN thông tin ra màn hình
Serial.print("Do am: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Nhiet do: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print("Ánh sáng: ");
Serial.print(lux);
Serial.println("lx");
}
void clockDisplay()
{ currentTime = String(hour()) + ":" + minute() + ":" + second();
currentDate = String(day()) + " " + month() + " " + year();
Serial.print("Current time: ");
Serial.print(currentTime);
Serial.print(" ");
Serial.print(currentDate);
Serial.println();
}
void startTimers()
{
timer.setInterval(READ_AIR_DATA_TM * 1000, readsensor);
timer.setInterval(READ_LUX_TM * 1000, readsensor);
timer.setInterval(DISPLAY_DATA_TM*1000, printData);
timer.setInterval(SEND_UP_DATA_TM * 1000, sendUptime);
timer.setInterval(10000L, clockDisplay);
}
void sendUptime()
{
Blynk.virtualWrite(10, t); //Nhiệt độ với pin V10
Blynk.virtualWrite(11, h); // Độ ẩm với pin V11
Blynk.virtualWrite(12, lux); // ánh sáng với V12
Blynk.virtualWrite(V9,"INDIVIDUAL PROJECT");
if (led1.getValue()) {
led1.off();
} else {
led1.on();
}
}
void turnPumpOn()
{
digitalWrite(PS, LOW);
SP.off();
Blynk.virtualWrite(V5, LOW);
Blynk. logEvent("canhbao","Bạn đã tưới cây trong vòng 10 phút");
}