#include <EEPROM.h>
#define MAXMILLIS 4294967295
#include "DHT.h"
#define DHTPIN 9
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int hum = 110;
int thum = 110;
byte d2 = EEPROM.read(2);
byte d3 = EEPROM.read(3);
byte d4 = EEPROM.read(4);
int shim1 = EEPROM.read(5);
int shim2 = EEPROM.read(6);
byte d7 = 0;
byte d8 = 0;
byte d11 = EEPROM.read(11);
byte d12 = EEPROM.read(12);
byte d13 = EEPROM.read(13);
int oxlagdenie = EEPROM.read(14);
int toxl = EEPROM.read(15);
int podogrev = EEPROM.read(16);
int tpod = EEPROM.read(17);
byte descript[5];
unsigned long time;
long timelapsed = 0;
byte count=0;
void setup()
{
Serial.begin(57600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
thum = dht.readTemperature();
hum = dht.readHumidity();
if(d2) digitalWrite(2, HIGH); else digitalWrite(2, LOW);
delay(500);
if(d3) digitalWrite(3, HIGH); else digitalWrite(3, LOW);
delay(500);
if(d4) digitalWrite(4, HIGH); else digitalWrite(4, LOW);
delay(500);
analogWrite(5, shim1 * 2.55);
delay(500);
analogWrite(6, shim2 * 2.55);
delay(500);
if(d11) digitalWrite(11, HIGH); else digitalWrite(11, LOW);
delay(500);
if(d12) digitalWrite(12, HIGH); else digitalWrite(12, LOW);
delay(500);
if(d13) digitalWrite(13, HIGH); else digitalWrite(13, LOW);
}
void loop()
{
if (Serial.available()>4)
{
if (Serial.read()=='Y')
{
for (byte i=0; i < 5; i++)
{
descript[i] = Serial.read();
}
if((descript[0] =='+') && (descript[1] =='=') && (descript[2] =='Z'))
{
switch (descript[3])
{
case 'o':
glavnaia();
break;
case 'A':
digitalWrite(2, HIGH);
d2 = 1;
EEPROM.write(2, d2);
glavnaia();
break;
case 'a':
digitalWrite(2, LOW);
d2 = 0;
EEPROM.write(2, d2);
glavnaia();
break;
case 'B':
digitalWrite(3, HIGH);
d3 = 1;
EEPROM.write(3, d3);
glavnaia();
break;
case 'b':
digitalWrite(3, LOW);
d3 = 0;
EEPROM.write(3, d3);
glavnaia();
break;
case 'C':
digitalWrite(4, HIGH);
d4 = 1;
EEPROM.write(4, d4);
glavnaia();
break;
case 'c':
digitalWrite(4, LOW);
d4 = 0;
EEPROM.write(4, d4);
glavnaia();
break;
case 'D':
shim1++;
if(shim1 > 100) shim1 = 100;
EEPROM.write(5, shim1);
analogWrite(5, shim1 * 2.55);
glavnaia();
break;
case 'd':
shim1--;
if(shim1 < 1) shim1 = 0;
EEPROM.write(5, shim1);
analogWrite(5, shim1 * 2.55);
glavnaia();
break;
case 'E':
shim2++;
if(shim2 > 100) shim2 = 100;
EEPROM.write(6, shim2);
analogWrite(6, shim2 * 2.55);
glavnaia();
break;
case 'e':
shim2--;
if(shim2 < 1) shim2 = 0;
EEPROM.write(6, shim2);
analogWrite(6, shim2 * 2.55);
glavnaia();
break;
case 'F':
shim1 = EEPROM.read(5);
analogWrite(5, shim1 * 2.55);
glavnaia();
break;
case 'f':
shim1 = 0;
analogWrite(5, shim1);
glavnaia();
break;
case 'G':
shim2 = EEPROM.read(6);
analogWrite(6, shim2 * 2.55);
glavnaia();
break;
case 'g':
shim2 = 0;
analogWrite(6, shim2);
glavnaia();
break;
case 'J':
digitalWrite(11, HIGH);
d11 = 1;
EEPROM.write(11, d11);
glavnaia();
break;
case 'j':
digitalWrite(11, LOW);
d11 = 0;
EEPROM.write(11, d11);
glavnaia();
break;
case 'K':
digitalWrite(12, HIGH);
d12 = 1;
EEPROM.write(12, d12);
glavnaia();
break;
case 'k':
digitalWrite(12, LOW);
d12 = 0;
EEPROM.write(12, d12);
glavnaia();
break;
case 'M':
digitalWrite(13, HIGH);
d13 = 1;
EEPROM.write(13, d13);
glavnaia();
break;
case 'm':
digitalWrite(13, LOW);
d13 = 0;
EEPROM.write(13, d13);
glavnaia();
break;
case 'N':
oxlagdenie++;
EEPROM.write(14, oxlagdenie);
toxl = 1;
EEPROM.write(15, toxl);
glavnaia();
break;
case 'n':
oxlagdenie--;
if(oxlagdenie < 1)
{
oxlagdenie = 0;
toxl = 0;
EEPROM.write(14, oxlagdenie);
EEPROM.write(15, toxl);
digitalWrite(7, LOW);
d7 = 0;
}
glavnaia();
break;
case 'P':
podogrev++;
EEPROM.write(16, podogrev);
tpod = 1;
EEPROM.write(17, tpod);
glavnaia();
break;
case 'p':
podogrev--;
if(podogrev < 1)
{
podogrev = 0;
tpod = 0;
EEPROM.write(16, podogrev);
EEPROM.write(17, tpod);
digitalWrite(8, LOW);
d8 = 0;
}
glavnaia();
break;
default:
glavnaia();
}
}
else
{
for(byte i=0; i < 255; i++)
{
Serial.read();
}
}
}
}
unsigned long currtime = millis();
if(currtime > time) timelapsed = (currtime - time);
else timelapsed = (MAXMILLIS - time + currtime);
if(timelapsed >= 120000)
{
time = currtime;
count++;
if(count == 1) thum = dht.readTemperature();
if(count == 2) hum = dht.readHumidity();
if(count > 1) count=0;
if((thum > oxlagdenie) && (toxl == 1))
{
digitalWrite(7, HIGH);
d7 = 1;
}
else if(toxl == 1)
{
digitalWrite(7, LOW);
d7 = 0;
}
if((thum < podogrev) && (tpod == 1))
{
digitalWrite(8, HIGH);
d8 = 1;
}
else if(tpod == 1)
{
digitalWrite(8, LOW);
d8 = 0;
}
}
}
void glavnaia()
{
Serial.print(d2);
Serial.print(",");
Serial.print(d3);
Serial.print(",");
Serial.print(d4);
Serial.print(",");
Serial.print(0);
Serial.print(",");
Serial.print(0);
Serial.print(",");
Serial.print(d7);
Serial.print(",");
Serial.print(d8);
Serial.print(",");
Serial.print(0);
Serial.print(",");
Serial.print(0);
Serial.print(",");
Serial.print(d11);
Serial.print(",");
Serial.print(d12);
Serial.print(",");
Serial.print(d13);
Serial.print(",");
Serial.print(shim1);
Serial.print(",");
Serial.print(shim2);
Serial.print(",");
Serial.print(thum);
Serial.print(",");
Serial.print(hum);
Serial.print(",");
Serial.print(oxlagdenie);
Serial.print(",");
Serial.println(podogrev);
}