#include "etherShield.h" #include "ETHER_28J60.h" #include #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("

БОЛЬШОЙ ПОДВАЛ

"); ethernet.print("ОБНОВИТЬ СОСТОЯНИЕ
"); if (pot == LOW) { // Условие включения и отключения затопления ethernet.print("

Внимание Затопление!!!

"); } if (temp <= 3) { // Условие вывода сообщения Угроза разморозки системы ethernet.print("

Угроза разморозки системы

"); } 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("

Температура

"); ethernet.print("

"); ethernet.print(temp); ethernet.print("

"); ethernet.print("

Влага

"); ethernet.print("

"); ethernet.print(vlaga); ethernet.print("

"); ethernet.print("

Сработка Вентиляции

"); ethernet.print("

"); ethernet.print(vf); ethernet.print("

"); ethernet.print("Уменьшить Увеличить
"); ethernet.respond(); } } void go_back_home() { ethernet.print(""); }