#include "etherShield.h"
#include "ETHER_28J60.h"
#include <EEPROM.h>
#include "DHT.h"
#define DHTPIN 2 // к какому пину будет подключен вывод Data
//выбор используемого датчика
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
//инициализация датчика
DHT dht(DHTPIN, DHTTYPE);
int VlagInPin = 3;
int RelPin = 4;
int PotPin = 5;
byte vlaga = 75;
int temp = 55;
int vent =85;
int pot; // переменная датчика затопления
byte vf; // переменная для значения влаги во флеше
static uint8_t mac[6] = {0x54,0x55,0x58,0x10,0x00,0x24};
static uint8_t ip[4] = {192,168,88,24};
static uint16_t port = 80;
ETHER_28J60 ethernet;
void setup()
{
dht.begin(); //
pinMode(VlagInPin, INPUT);
pinMode(RelPin, OUTPUT);
digitalWrite(RelPin, HIGH);
pinMode(PotPin, OUTPUT);
digitalWrite(PotPin, HIGH);
vf = EEPROM.read(0); //чтение из флеш значение влаги для сработки вентилятора
if ( vf > 110)
{
EEPROM.write(0, 110); // Запись нового значения в Флеш
}
ethernet.setup(mac, ip, port);
}
void loop()
{
// чтение температуры и влажности займет примерно 250 миллисекунд
//float h = dht.readHumidity();
//float t = dht.readTemperature();
vlaga = dht.readHumidity();
temp = dht.readTemperature();
pot = digitalRead(VlagInPin);
if (pot == LOW) { // Условие включения и отключения затопления
digitalWrite(PotPin, LOW);
}
if (pot == HIGH) { // Условие включения и отключения затопления
digitalWrite(PotPin, HIGH);
}
if (vlaga >= vf) { // Условие включения и отключения вентиляции
digitalWrite(RelPin, LOW);
}
if (vlaga < vf-1) { // Условие включения и отключения вентиляции
digitalWrite(RelPin, HIGH);
}
String param;
if (param = ethernet.serviceRequest())
{
ethernet.print("<H1>БОЛЬШОЙ ПОДВАЛ</H1>");
ethernet.print("<a href=\"/\">ОБНОВИТЬ СОСТОЯНИЕ</a><br>");
if (pot == LOW) { // Условие включения и отключения затопления
ethernet.print("<H1>Внимание Затопление!!!</H1>");
}
if (temp <= 3) { // Условие вывода сообщения Угроза разморозки системы
ethernet.print("<H1>Угроза разморозки системы</H1>");
}
if (param == "plus") {
vf++; // Увеличить значение переменной влаги
if ( vf > 110)
{
vf=110;
}
EEPROM.write(0, vf); // Запись нового значения в Флеш
go_back_home();
}
if (param == "minus") {
vf--; // Уменьшить значение переменной влаги
if ( vf < 5)
{
vf=5;
}
EEPROM.write(0, vf); // Запись нового значения в Флеш
go_back_home();
}
ethernet.print("<H1>Температура</H1>");
ethernet.print("<H2>");
ethernet.print(temp);
ethernet.print("</H2>");
ethernet.print("<H1>Влага</H1>");
ethernet.print("<H2>");
ethernet.print(vlaga);
ethernet.print("</H2>");
ethernet.print("<H1>Сработка Вентиляции</H1>");
ethernet.print("<H2>");
ethernet.print(vf);
ethernet.print("</H2>");
ethernet.print("<a href=\"/minus\">Уменьшить</a> <a href=\"/plus\">Увеличить</a><br>");
ethernet.respond();
}
}
void go_back_home() {
ethernet.print("<meta http-equiv='refresh' content='0;URL=http://");
ethernet.print(ip[0]);
ethernet.print(".");
ethernet.print(ip[1]);
ethernet.print(".");
ethernet.print(ip[2]);
ethernet.ptint(".");
ethernet.print(ip[3]);
ethernet.print("/' />");
}