hydro/Hydro_DHT22_Blink.ino
2021-06-03 19:52:39 +03:00

161 lines
3.7 KiB
C++

//////////////////////////////////////////////////////////////
class Pump
{
int pin; // Куда подключен
unsigned long lastTime;
int duration; // Время полива
int maxDuration; // Максимальное время полива
int currentDuration; // Текущее время полива для отображения в приложении
public:
Pump(int p) // Пин
{
pin = p;
pinMode(pin, OUTPUT);
digitalWrite(pin, HIGH); // При создании выключена // Инверсия
lastTime = millis();
currentDuration = 0;
}
void Update()
{
if ((millis() - lastTime) > duration * 1000)
{
digitalWrite(pin, HIGH); // Инверсия
}
}
void Start()
{
if (!IsON())
{
Serial.print("Start! ");
Serial.println(duration);
lastTime = millis();
digitalWrite(pin, LOW); // Инверсия
Update();
}
}
void Stop()
{
if (IsON())
{
Serial.print("Stop! ");
Serial.println(duration);
lastTime = millis();
digitalWrite(pin, HIGH); // Инверсия
Update();
}
}
boolean IsON() // Текущее состояние
{
if (digitalRead(pin) == LOW) // Инверсия
{
return true;
}
else
{
return false;
}
}
int GetCurrentDuration()
{
if (IsON()) // Если помпа включена
{
return ((millis() - lastTime) / 1000); // Текущее время полива
}
else
{
return 0;
}
}
void SetDuration(int d)
{
duration = d;
Serial.print("SetDuration ");
Serial.println(duration);
}
};
//////////////////////////////////////////////////////////////
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include "DHT.h"
#include "WEMOS_Motor.h"
#include <EEPROM.h>
//char auth[] = "Fdj2ndHfZmRirtgrgdrfh81fzPpfB0-"; // origin
//char ssid[] = "WIFI";
//char pass[] = "132password";
#include "auth.h"
BLYNK_CONNECTED() {
// Request Blynk server to re-send latest values for all pins
Blynk.syncAll();
}
#define DHTTYPE DHT22
#define DHTPin 0 //D3 DHT датчик
#define term_power 4 //D2
#define led_pin 2 // D4
//#define pump1_pin 3 // ??????????D4
boolean led_status = 0;
float Temperature;
float Humidity;
DHT dht(DHTPin, DHTTYPE); // Инициализация датчика DHT
BlynkTimer timer;
// Pump pump1(pump1_pin);
Pump pump1(led_pin);
Motor M1(0x30,_MOTOR_A, 1000); // Помпа
/////////////////////////////////////////////////////////////
// BLYNK_WRITE() на первой вкладке, по-другому не работает //
/////////////////////////////////////////////////////////////
BLYNK_WRITE(V0) // Длительность полива первой помпы
{
int d = param.asInt();
pump1.SetDuration(d);
Serial.print("Длительность: ");
Serial.println(d);
}
BLYNK_WRITE(V1) // Таймер
{
// You'll get HIGH/1 at startTime and LOW/0 at stopTime.
// this method will be triggered every day
// until you remove widget or stop project or
// clean stop/start fields of widget
Serial.print("Таймер: ");
Serial.println(pump1.GetCurrentDuration());
pump1.Start();
}
BLYNK_WRITE(V4) // Кнопка помпы 1
{
pump1.Start();
}
//BLYNK_WRITE(V5) // Таймер
//{
// int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable
// Serial.print("V1 Slider value is: ");
// Serial.println(pinValue);
// run_pump();
//}