Автополив теплицы

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

Исправил как посоветовал Tomasina

почти 2 кбт освободил, так что теперь все влазеет ))

arduino 1.6.4 библы тока сдесь должны быть arduino-1.6.4\libraries\ YRA удалите все лишние пути и библы.

скетч 100% рабочий!!!!


/* Автополив v3.0 Рус 4-х канальный полив, 3-4 канал блокировка при дожде!!!
Sergey Samokish Sergey_nevinka@mail.ru
Полив: - по таймеру недельному
       
Проветривание: - по датчику температурцы в теплице
               - вручную с кнопки
Адреса в EEPROM
EEPROM 0 Минимальное значение температуры актуатора
EEPROM 1 Максимальное значение темп актуатора
 1 линия полива
EEPROM 2 Минимальное значение влажности земли
EEPROM 3 Максимальное значение влажности земли

EEPROM 4 1/0 включение отключение полива (0=off / 1=on) 1 канал
EEPROM 5 стоп час полива
EEPROM 6 стоп мин полива
EEPROM 7 старт час полива
EEPROM 8 старт минута полива

EEPROM 9 1/0 включение отключение полива (0=off / 1=on) 2 канал
EEPROM 10 стоп час полива
EEPROM 11 стоп мин полива
EEPROM 12 старт час полива
EEPROM 13 старт минута полива

EEPROM 14 1/0 включение отключение полива (0=off / 1=on) 3 канал
EEPROM 15 стоп час полива
EEPROM 16 стоп мин полива
EEPROM 17 старт час полива
EEPROM 18 старт минута полива

EEPROM 19 1/0 включение отключение полива (0=off / 1=on) 4 кана
EEPROM 20 стоп час полива
EEPROM 21 стоп мин полива
EEPROM 22 старт час полива
EEPROM 23 старт минута полива

///дни недели для таймера вкл и или выкл в конкретный день
EEPROM 24  Пн
EEPROM 25  Вт
EEPROM 26  Ср
EEPROM 27  Чт
EEPROM 28  Пт
EEPROM 29  Сб
EEPROM 30  Вс

EEPROM 31  Пн
EEPROM 32  Вт
EEPROM 33  Ср
EEPROM 34  Чт
EEPROM 35  Пт
EEPROM 36  Сб
EEPROM 37  Вс

EEPROM 38  Пн
EEPROM 39  Вт
EEPROM 40  Ср
EEPROM 41  Чт
EEPROM 42  Пт
EEPROM 43  Сб
EEPROM 44  Вс

EEPROM 45  Пн
EEPROM 46  Вт
EEPROM 47  Ср
EEPROM 48  Чт
EEPROM 49  Пт
EEPROM 50  Сб
EEPROM 51  Вс

EEPROM 53 Состояние полива вкл/выкл для востонавления после сбоя питания канал 1
EEPROM 54 Состояние полива вкл/выкл для востонавления после сбоя питания канал 2
EEPROM 55 Состояние полива вкл/выкл для востонавления после сбоя питания канал 3
EEPROM 56 Состояние полива вкл/выкл для востонавления после сбоя питания канал 4
EEPROM 57 Состояние Актуатора вкл/выкл для востонавления после сбоя питания !!!!ЕСЛИ не работает датчик температуры!!! если работает то он и так откроет вентиляцию


*/
#define HumTerraPower 9                   //пин для питания датчика влажности 
#define KEYBOARD A0
#define HumTerraIn A1   //пин снятия влажности 
#define UVinIN A2  //пин снятия напряжения U VIN на делителе  +Vin -20kOm - отвод на A2 - 9,4 kOm - земля. все это нужно для управления актуаторами.
#define irrigator_relay 10                //пин включения полива   (1) MP701 модуль реле от DESSY.ru
#define irrigator_relay2 11               //пин включения полива   (2)
#define irrigator_relay3 12               //пин включения полива   (3)
#define irrigator_relay4 13               //пин включения полива   (4) 
#include <EEPROM2.h>
//задаем пины управления двигателями форточки на реле 1-4
#define Actuator_relay  4    //пин включения реле управления форточкой   (1) MP701 модуль реле от DESSY.ru     
#define Actuator_relay2 5    //пин включения реле управления форточкой   (2)
#define Actuator_relay3 6    //пин включения реле управления форточкой   (3)
#define Actuator_relay4 7    //пин включения реле управления форточкой   (4)
boolean ActuatorStatus;
//Создаем переменные для работы с термометром
byte TINMin=0;                             //переменная Min температуры актуатора
byte TINMax=0;                             // переменная Max температуры актуатора
byte TIn=0;                              //переменная температуры воздуха в теплице
//Создаем переменные для работы с Гигрометром
int HumTerraINMin=0;                     //переменная Min влажность земли
//int HumTerraINMax=0;                     // переменная Max влажность земли
int HumTerraTmp=0;                           // переменная промежуточной влажности земли 
int HumTerra=0;                          // переменная текущей влажности земли  
int HumIn=0;                            //переменная влажности воздуха в теплице
int UVinTMP;  //Для измерения напряжение Vin на резистивном делитележ
//Объявим переменную для хранения состояния реле

boolean relayStatusIrr=EEPROM_read_byte(53); //реле полива
//boolean relayStatusIrr=LOW;

boolean relayStatusIrr2=EEPROM_read_byte(54); //реле полива
//boolean relayStatusIrr2=LOW;
boolean relayStatusIrr3=EEPROM_read_byte(55); //реле полива
boolean relayStatusIrr4=EEPROM_read_byte(56); //реле полива
boolean relayStatusActuator=EEPROM_read_byte(57); //реле актуатора

// подключение датчиков DHT11
#include <DHT.h>
#define DHTIN 8 //определяем пин
#define DHTTYPE DHT11     // DHT 11 
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT dht(DHTIN, DHTTYPE);

//LCD 200x4 I2C
#include <LiquidCrystal_I2C.h>
// Глифы русских букв 
byte yu[8] = {  //Ю
        B10010,
        B10101,
        B10101,
        B11101,
        B10101,
        B10101,
        B10010,
        B00000
};
byte ii[8] = {  //Ы
        B10001,
        B10001,
        B10001,
        B11101,
        B10101,
        B10101,
        B11101,
        B00000
};
byte che[8] = {  //Ч
        B10001,
        B10001,
        B10001,
        B01111,
        B00001,
        B00001,
        B00001,
        B00000
};
byte pe[8] = { //П
        0b11111,
        0b10001,
        0b10001,
        0b10001,
        0b10001,
        0b10001,
        0b10001,
        0b00000
};
byte ll[8] = { //Л
      0b00111,
      0b01001,
      0b01001,
      0b01001,
      0b01001,
      0b01001,
      0b10001,
      0b00000
};
byte u[8] = { //У
        B10001,
        B10001,
        B10001,
        B01010,
        B00100,
        B01000,
        B10000,
        B00000
};
byte i[8] = { //И
        B10001,
        B10011,
        B10101,
        B11001,
        B10001,
        B10001,
        B10001,
        B00000
};
byte be[8] = { //Б
        0b11111,
        0b10000,
        0b10000,
        0b11110,
        0b10001,
        0b10001,
        0b11110,
        0b00000
};       

LiquidCrystal_I2C lcd(0x27,20,4); 
//клавиатуры - аналоговая
int button;
const int BUTTON_NONE   = 0;
const int BUTTON_RIGHT  = 5;
const int BUTTON_DOWN   = 4;
const int BUTTON_UP     = 3;
const int BUTTON_LEFT   = 2;
const int BUTTON_SELECT = 1;
byte flag=0; //флаг былали нажата кнопка

//функция считывания клавиатуры НАДО калибровать под контретную сборку резисторов!!!!!!!
byte getPressedButton()
{
  int buttonValue = analogRead(KEYBOARD);
  delay(50); //задержка для устранения дребезга
  if (buttonValue < 100) {
    return BUTTON_RIGHT;  
  }
  else if (buttonValue < 300){
    return BUTTON_DOWN;
    }
  else if (buttonValue < 700) {
    return BUTTON_UP;
  }
  else if (buttonValue < 800){
    return BUTTON_LEFT;
  }
  else if (buttonValue < 900){
    return BUTTON_SELECT;
  }
  return BUTTON_NONE;
}

byte Tday=0; //день недели
byte regim=0; //для меню
byte posic=0;
byte tHumTerra=0; //флаг вкл измеревлаж почвы
byte flagActManual=0;//флаг Актуатором
byte flagIrrManual=0;//флаг зона 1
byte flagIrrManual2=0;//флаг зона 2
byte flagIrrManual3=0;//флаг зона 3
byte flagIrrManual4=0;//флаг зона 4
byte flagIrrWater=0;//флаг ДОЖДЯ
byte Timer=0; //таймера 1
byte Timer2=0; //таймера 2
byte Timer3=0; //таймера 3
byte Timer4=0; //таймера 4

byte TstartHour=0; //часы таймера
byte TstartMinute=0; //минуты таймера
byte TstopHour=0; //часы интервала таймера
byte TstopMinute=0; //минуты интервала таймера

byte TstartHour2, TstartMinute2,TstopHour2,TstopMinute2; 
byte TstartHour3, TstartMinute3,TstopHour3,TstopMinute3; 
byte TstartHour4, TstartMinute4,TstopHour4,TstopMinute4; 

//ds3231 модуль часов реального времени
#include <Wire.h>
#include "DS3231.h" //модифицированная отсюда: http://arduino.ru/forum/programmirovanie/chasy-i-arduino#comment-112470
DS3231  rtc(SDA, SCL);
Time  t; 

void setup() 
   {
      Serial.begin(9600);
      Serial.println("Служебка.......");
         lcd.init();                         
         lcd.backlight();                     
         lcd.createChar(1, yu); 
         lcd.createChar(2, ii); 
         lcd.createChar(3, che);
         lcd.createChar(4, pe);
         lcd.createChar(5, ll);
         lcd.createChar(6, u);
         lcd.createChar(7, i);
         lcd.createChar(0, be);
         lcd.clear();
         lcd.print("ABTO\4O\5\7B v.3.0 P\6");
         Wire.begin(); 
         rtc.begin();
        lcd.setCursor(0, 2);
        t = rtc.getTime();
        if (t.date<10) lcd.print("0");
        lcd.print(t.date);
        lcd.print(" ");
        lcd.print(rtc.getMonthStr());
        lcd.print(" ");
        lcd.print(t.year);
        lcd.setCursor(0,3);
          if (t.dow==1) lcd.print("\4H");
          if (t.dow==2) lcd.print("BT");
          if (t.dow==3) lcd.print("CP");
          if (t.dow==4) lcd.print("\3T");
          if (t.dow==5) lcd.print("\4T");
          if (t.dow==6) {lcd.print("C");lcd.write(0);}
          if (t.dow==7) lcd.print("BC");                                        
        lcd.print(" ");
        // Send time
        lcd.println(rtc.getTimeStr());
        lcd.print("    ");
        lcd.setCursor(0,1);
        delay(2000);
        lcd.clear();
        
        dht.begin(); 
      //     The following lines can be uncommented to set the date and time
    // rtc.setDOW(TUESDAY);     // Set Day-of-Week to SUNDAY
     //rtc.setTime(9,0, 0);     // Set the time to 12:00:00 (24hr format)
     //rtc.setDate(31,05, 2016);   // Set the date to January 1st, 2014  
  
//Настроим пин для управления реле
  pinMode(irrigator_relay,OUTPUT);
  digitalWrite(irrigator_relay,LOW);
  pinMode(irrigator_relay2,OUTPUT);
  digitalWrite(irrigator_relay2,LOW);
  pinMode(irrigator_relay3,OUTPUT);
  digitalWrite(irrigator_relay3,LOW);
  pinMode(irrigator_relay4,OUTPUT);
  digitalWrite(irrigator_relay4,LOW);
  pinMode (HumTerraPower,OUTPUT);
  digitalWrite (HumTerraPower,LOW);

//Настройка пинов для управления двигателями форточки
pinMode(Actuator_relay, OUTPUT);
digitalWrite(Actuator_relay,LOW);
pinMode(Actuator_relay2, OUTPUT);
digitalWrite(Actuator_relay2,LOW);
pinMode(Actuator_relay3, OUTPUT);
digitalWrite(Actuator_relay3,LOW);
pinMode(Actuator_relay4, OUTPUT);
digitalWrite(Actuator_relay4,LOW);

pinMode (A0, INPUT_PULLUP);// подтягиваем питание на вход

}
void timeDS3231() //Обработка часов
{
   t = rtc.getTime(); 
}
//Обработка нажатия кнопки аналоговой
void Button_read()
{
button = getPressedButton(); 
if (button>0) flag=1;
}
 //счит темп воздуха в теплице
void TInGet()
{
  TIn = int(dht.readTemperature()); 
}
//счит Влажн воздуха в теплице
void HumInGet()
{
  HumIn = int (dht.readHumidity());
}
//Считываем датчик дождя (или влажности почвы на улице)
void HumTerraGet()
   {
     HumTerraINMin=EEPROM_read_byte(2);
              if ((t.sec==0) or (t.sec==10) or (t.sec==20) or (t.sec==30)or (t.sec==40) or (t.sec==50))
                    {
                      digitalWrite(HumTerraPower,HIGH);
                     delay(1000);  
                     HumTerraTmp=analogRead(HumTerraIn);              
                     HumTerra=map(HumTerraTmp,0,1023,99.9,0);
                     if (HumTerra>HumTerraINMin) flagIrrWater=1;
                     if (HumTerra<HumTerraINMin) flagIrrWater=0;
                    }                
              else 
              if ((t.sec==2) or (t.sec==12) or (t.sec==22) or (t.sec==32) or (t.sec==42) or (t.sec==52)){ digitalWrite(HumTerraPower,LOW);}
            
              
   }    
   
   void UVinGet() //измеряем напряжение на Vin с помощью делителя
   {
           UVinTMP=analogRead(UVinIN);              
           //Serial.println(UVin);
           Serial.println(UVinTMP);
           if (UVinTMP>600) ActuatorStatus=true; //3,85 В
            else 
            if (UVinTMP<600) ActuatorStatus=false; //2,74 В так просаживается БП АТХ
   }    
//=========== Отработка актуатора
void Actuator()
{
   //EEPROM_write_byte(57,0); //заносим первоначальное значение 1 раз при первой загрузке скетча
    TINMin=EEPROM_read_byte(0);//Считаем из постоянной памяти МИН температуру 
    TINMax=EEPROM_read_byte(1);//Считаем из постоянной памяти МАКС температуру
    if (TIn==0) {lcd.setCursor(9,0);lcd.print("[?]");} //если датчик не работает то выводим информацию о неисправности
    if (EEPROM_read_byte(57)==1) {lcd.setCursor(9, 3);lcd.print("BK ");relayStatusActuator=HIGH;}
    if (EEPROM_read_byte(57)==0) {lcd.setCursor(9, 3);lcd.print("B\2K ");relayStatusActuator=LOW;}
   
        if ((TIn>TINMax)&&relayStatusActuator==LOW) {lcd.setCursor(9, 3);lcd.print("BK ");relayStatusActuator=HIGH;EEPROM_write_byte(57,1);flagActManual=0;open_windows();}
          else
        if ((TIn<TINMin)&&relayStatusActuator==HIGH) {lcd.setCursor(9, 3);lcd.print("B\2K");relayStatusActuator=LOW;EEPROM_write_byte(57,0);flagActManual=1; close_windows();}
          else
        if ((TIn==0) or (TIn<TINMin) or (TIn==TINMin))  flagActManual=1; //Если значения не в заданном диапазоне для открытия позволяем вручную управлять 
}
//=========== Отработка автополива
void  Irrigation() 
{
    
   //1-й кнал
   Timer=EEPROM_read_byte(4); //включен или нет
   TstartHour=EEPROM_read_byte(5);
   TstartMinute=EEPROM_read_byte(6);  
   TstopHour=EEPROM_read_byte(7);
   TstopMinute=EEPROM_read_byte(8);
    
       if (Timer==0&&relayStatusIrr==LOW) {lcd.setCursor(6,1);lcd.print("P");}
       if (relayStatusIrr==HIGH) {lcd.setCursor(6,1);lcd.print(char(255));}
       if (Timer==1&&relayStatusIrr==LOW) {lcd.setCursor(6,1);lcd.print("T");}
       if  (EEPROM_read_byte(53)==1) {digitalWrite(irrigator_relay,HIGH);relayStatusIrr=HIGH;flagIrrManual=0;}
       if  (EEPROM_read_byte(53)==0) {digitalWrite(irrigator_relay,LOW);relayStatusIrr=LOW;flagIrrManual=1;}
                   
       if (Timer==1)  
                   {  
                      byte i;
                      for (i=0; i<7;i++)
                                   {
                                     if ((t.dow==i+1)&&EEPROM_read_byte(24+i)==1)
                                         {
                                         if (t.hour==TstartHour&&t.min==TstartMinute) {digitalWrite(irrigator_relay,HIGH);EEPROM_write_byte(53,1);}
                                           else 
                                         if (t.hour==TstopHour&&t.min==TstopMinute) {digitalWrite(irrigator_relay,LOW);EEPROM_write_byte(53,0);}
                                         }
                                   }     
                   }
                   if (Timer==0)
                  {digitalWrite(irrigator_relay,LOW);EEPROM_write_byte(53,0);}
 
   //2-й канал
   Timer2=EEPROM_read_byte(9); //включен или нет
   TstartHour2=EEPROM_read_byte(10);
   TstartMinute2=EEPROM_read_byte(11); 
   TstopHour2=EEPROM_read_byte(12);
   TstopMinute2=EEPROM_read_byte(13);
  
    if (Timer2==0&&relayStatusIrr2==LOW) {lcd.setCursor(10,1);lcd.print("P");}
    if (Timer2==1&&relayStatusIrr2==LOW) {lcd.setCursor(10,1);lcd.print("T");}
    if (relayStatusIrr2==HIGH) {lcd.setCursor(10,1);lcd.print(char(255));}
    if  (EEPROM_read_byte(54)==1) {digitalWrite(irrigator_relay2,HIGH);relayStatusIrr2=HIGH;flagIrrManual2=0;}
    if  (EEPROM_read_byte(54)==0) {digitalWrite(irrigator_relay2,LOW);relayStatusIrr2=LOW;flagIrrManual2=1;}
    if (Timer2==1)  
                   {  
                      byte i;
                      for (i=0; i<7;i++)
                                   {
                                     if ((t.dow==i+1)&&EEPROM_read_byte(31+i)==1)
                                         {
                                         if (t.hour==TstartHour2&&t.min==TstartMinute2) {digitalWrite(irrigator_relay2,HIGH);EEPROM_write_byte(54,1);}
                                           else 
                                         if (t.hour==TstopHour2&&t.min==TstopMinute2) {digitalWrite(irrigator_relay2,LOW);EEPROM_write_byte(54,0);}
                                         }
                                   }     
                  }
                   if (Timer2==0)
                  {digitalWrite(irrigator_relay2,LOW);EEPROM_write_byte(54,0);}
   //3-й канал
   Timer3=EEPROM_read_byte(14); //включен или нет
   TstartHour3=EEPROM_read_byte(15);
   TstartMinute3=EEPROM_read_byte(16); 
   TstopHour3=EEPROM_read_byte(17);
   TstopMinute3=EEPROM_read_byte(18);
   
    if (Timer3==0&&flagIrrWater==0&&relayStatusIrr3==LOW) {lcd.setCursor(14,1);lcd.print("P");}
    if (Timer3==1&&flagIrrWater==0&&relayStatusIrr3==LOW) {lcd.setCursor(14,1);lcd.print("T");}
    if (relayStatusIrr3==HIGH) {lcd.setCursor(14,1);lcd.print(char(255));}
    if (flagIrrWater==1) {lcd.setCursor(14,1);lcd.write(0);digitalWrite(irrigator_relay3,LOW);EEPROM_write_byte(55,0);} //Б - блокировка по дождю
    if  (EEPROM_read_byte(55)==1) {digitalWrite(irrigator_relay3,HIGH);relayStatusIrr3=HIGH;flagIrrManual3=0;}
    if  (EEPROM_read_byte(55)==0) {digitalWrite(irrigator_relay3,LOW);relayStatusIrr3=LOW;flagIrrManual3=1;}
    if (Timer3==1&&flagIrrWater==0)  
                   {  
                    byte i;
                      for (i=0; i<7;i++)
                                   {
                                     if ((t.dow==i+1)&&EEPROM_read_byte(38+i)==1)
                                         {
                                         if (t.hour==TstartHour3&&t.min==TstartMinute3) {digitalWrite(irrigator_relay3,HIGH);EEPROM_write_byte(55,1);}
                                           else 
                                         if (t.hour==TstopHour3&&t.min==TstopMinute3) {digitalWrite(irrigator_relay3,LOW);EEPROM_write_byte(55,0);}
                                         }
                                   }     
                  }            
                   if (Timer3==0)
                  {digitalWrite(irrigator_relay3,LOW);EEPROM_write_byte(55,0);}
   
   //4-й канал
   Timer4=EEPROM_read_byte(19); //включен или нет
   TstartHour4=EEPROM_read_byte(20);
   TstartMinute4=EEPROM_read_byte(21);
   TstopHour4=EEPROM_read_byte(22);
   TstopMinute4=EEPROM_read_byte(23);
  
    if (Timer4==0&&flagIrrWater==0&&relayStatusIrr4==LOW) {lcd.setCursor(18,1);lcd.print("P");}  
    if (Timer4==1&&flagIrrWater==0&&relayStatusIrr4==LOW) {lcd.setCursor(18,1);lcd.print("T");}
    if (relayStatusIrr4==HIGH) {lcd.setCursor(18,1);lcd.print(char(255));}  
    if  (EEPROM_read_byte(56)==1) {digitalWrite(irrigator_relay4,HIGH);relayStatusIrr4=HIGH;flagIrrManual4=0;}
    if  (EEPROM_read_byte(56)==0) {digitalWrite(irrigator_relay4,LOW);relayStatusIrr4=LOW;flagIrrManual4=1;}
    if (flagIrrWater==1) {lcd.setCursor(18,1);lcd.write(0);digitalWrite(irrigator_relay4,LOW);EEPROM_write_byte(56,0);}  //Б - блокировка по дождю 
    if (Timer4==1&&flagIrrWater==0)  
                   {  
                   byte i;
                      for (i=0; i<7;i++)
                                   {
                                     if ((t.dow==i+1)&&EEPROM_read_byte(45+i)==1)
                                         {
                                         if (t.hour==TstartHour4&&t.min==TstartMinute4) {digitalWrite(irrigator_relay4,HIGH);EEPROM_write_byte(56,1);}
                                           else 
                                         if (t.hour==TstopHour4&&t.min==TstopMinute4) {digitalWrite(irrigator_relay4,LOW);EEPROM_write_byte(56,0);}
                                         }
                                   }     
                 
                  } 
                   if (Timer4==0)
                  {digitalWrite(irrigator_relay4,LOW);EEPROM_write_byte(56,0);}
}

void StaticButton()
{
 Button_read();
//открываем/закрываем форточку ПРИНУДИТЕЛЬЛНО
   if (button==2&&flag==1)
             {
                if (relayStatusActuator==LOW) {open_windows(); lcd.setCursor(9, 3);lcd.print("BK ");relayStatusActuator=HIGH;flag=0;EEPROM_write_byte(57,1);} 
                   else  
                if (relayStatusActuator==HIGH) {close_windows(); lcd.setCursor(9, 3);lcd.print("B\2K");relayStatusActuator=LOW;flag=0;EEPROM_write_byte(57,0);}
             } 
   if (button==1&&flag==1){MenuSET();}
   if (button==5&&flag==1){TimerViewer();} 
}
//=========Вывод состояние таймеров (информативное окно) !!!!!!!!!!!!если в UNO не влазеет убираем совсем!!!!!!!!!!!!!!!!!!!!!!!!!!!
void TimerViewer ()
{
      lcd.setCursor(0,3);  //чистим нижнюю строчку икрана, от левой инфы
      lcd.print("                    "); 
      byte myArray[7]={1,4,7,10,13,16,19}; // для выделения дней в которых уст. таймер
      byte i;
    do
       {
              
       Button_read();
       delay(500);
       if (button==5 && flag==1) {regim++;flag=0;} 
         if (regim==1)//
            {
               lcd.setCursor(0, 0);
               lcd.print("[TA\7MEP 1] - ");
                 if (Timer==0) lcd.print("B\2K\5 ");
                 if (Timer==1) lcd.print("BK\5   ");
               TstartHour=EEPROM_read_byte(5);
               TstartMinute=EEPROM_read_byte(6);
               TstopHour=EEPROM_read_byte(7);
               TstopMinute=EEPROM_read_byte(8);
               lcd.setCursor(0, 1);
               lcd.print("BK\5=");
                 if (TstartHour<10){lcd.print("0");}
                    lcd.print(TstartHour);
                    lcd.print(":");
                 if (TstartMinute<10){lcd.print("0");}
                    lcd.print(TstartMinute);
                    lcd.print(" ");
                    lcd.setCursor(10,1);
                    lcd.print("B\2K\5=");
                    lcd.setCursor(15,1);
                 if (TstopHour<10){lcd.print("0");}
                    lcd.print(TstopHour);
                    lcd.print(":");
                 if (TstopMinute<10){lcd.print("0");}
                    lcd.print(TstopMinute);
                     lcd.setCursor(0,2);
                     lcd.print("\4H BT CP \3T \4T C");
                     lcd.write(0);
                     lcd.print(" BC");
                         //int myArray[7]={1,4,7,10,13,16,19};
                        // byte i;
                         for (i=0;i<7;i++)
                             {
                               if (EEPROM_read_byte(24+i)==1) {lcd.setCursor(myArray[i],3);lcd.print(char(94));}
                               if (EEPROM_read_byte(24+i)==0) {lcd.setCursor(myArray[i],3);lcd.print(" ");}
                             }
                                    
               
            }
         if (regim==2)//
           {
               lcd.setCursor(0, 0);
               //lcd.print("2");
               lcd.print("[TA\7MEP 2] - ");
                 if (Timer2==0) lcd.print("B\2K\5 ");
                 if (Timer2==1) lcd.print("BK\5   ");
               TstartHour2=EEPROM_read_byte(10);
               TstartMinute2=EEPROM_read_byte(11);
               TstopHour2=EEPROM_read_byte(12);
               TstopMinute2=EEPROM_read_byte(13);
               lcd.setCursor(0, 1);
               lcd.print("BK\5=");
                 if (TstartHour2<10){lcd.print("0");}
                    lcd.print(TstartHour2);
                    lcd.print(":");
                 if (TstartMinute2<10){lcd.print("0");}
                    lcd.print(TstartMinute2);
                    lcd.print(" ");
                    lcd.setCursor(10,1);
                    lcd.print("B\2K\5=");
                    lcd.setCursor(15,1);
                 if (TstopHour2<10){lcd.print("0");}
                    lcd.print(TstopHour2);
                    lcd.print(":");
                 if (TstopMinute2<10){lcd.print("0");}
                    lcd.print(TstopMinute2);
                     lcd.setCursor(0,2);
                     lcd.print("\4H BT CP \3T \4T C");
                     lcd.write(0);
                     lcd.print(" BC");
                       //  int myArray[7]={1,4,7,10,13,16,19};
                        // byte i;
                         for (i=0;i<7;i++)
                             {
                               if (EEPROM_read_byte(31+i)==1) {lcd.setCursor(myArray[i],3);lcd.print(char(94));}
                               if (EEPROM_read_byte(31+i)==0) {lcd.setCursor(myArray[i],3);lcd.print(" ");}
                             }
                                    
               
            }
         if (regim==3)//
            {
               lcd.setCursor(0, 0);
               lcd.print("[TA\7MEP 3] - ");
                 if (Timer3==0&&flagIrrWater==0) lcd.print("B\2K\5 ");
                 if (Timer3==1&&flagIrrWater==0) lcd.print("BK\5   ");
                 if (flagIrrWater==1) {lcd.write(0); lcd.print("\5OK\7P");}
               TstartHour3=EEPROM_read_byte(15);
               TstartMinute3=EEPROM_read_byte(16);
               TstopHour3=EEPROM_read_byte(17);
               TstopMinute3=EEPROM_read_byte(18);
               lcd.setCursor(0, 1);
               lcd.print("BK\5=");
                 if (TstartHour3<10){lcd.print("0");}
                    lcd.print(TstartHour3);
                    lcd.print(":");
                 if (TstartMinute3<10){lcd.print("0");}
                    lcd.print(TstartMinute3);
                    lcd.print(" ");
                    lcd.setCursor(10,1);
                    lcd.print("B\2K\5=");
                    lcd.setCursor(15,1);
                 if (TstopHour3<10){lcd.print("0");}
                    lcd.print(TstopHour3);
                    lcd.print(":");
                 if (TstopMinute3<10){lcd.print("0");}
                    lcd.print(TstopMinute3);
                     lcd.setCursor(0,2);
                     lcd.print("\4H BT CP \3T \4T C");
                     lcd.write(0);
                     lcd.print(" BC");
                     //    int myArray[7]={1,4,7,10,13,16,19};
                      //   byte i;
                         for (i=0;i<7;i++)
                             {
                               if (EEPROM_read_byte(38+i)==1) {lcd.setCursor(myArray[i],3);lcd.print(char(94));}
                               if (EEPROM_read_byte(38+i)==0) {lcd.setCursor(myArray[i],3);lcd.print(" ");}
                             }
                                    
               
            }
         if (regim==4)
            {
               lcd.setCursor(0, 0);
               lcd.print("[TA\7MEP 4] - ");
                 if (Timer4==0&&flagIrrWater==0) {lcd.print("B\2K\5 ");}
                 if (Timer4==1&&flagIrrWater==0) {lcd.print("BK\5   ");}
                 if (flagIrrWater==1) {lcd.write(0); lcd.print("\5OK\7P");}
               TstartHour4=EEPROM_read_byte(20);
               TstartMinute4=EEPROM_read_byte(21);
               TstopHour4=EEPROM_read_byte(22);
               TstopMinute4=EEPROM_read_byte(23);
               lcd.setCursor(0, 1);
               lcd.print("BK\5=");
                 if (TstartHour4<10){lcd.print("0");}
                    lcd.print(TstartHour4);
                    lcd.print(":");
                 if (TstartMinute4<10){lcd.print("0");}
                    lcd.print(TstartMinute4);
                    lcd.print(" ");
                    lcd.setCursor(10,1);
                    lcd.print("B\2K\5=");
                    lcd.setCursor(15,1);
                 if (TstopHour4<10){lcd.print("0");}
                    lcd.print(TstopHour4);
                    lcd.print(":");
                 if (TstopMinute4<10){lcd.print("0");}
                    lcd.print(TstopMinute4);
                     lcd.setCursor(0,2);
                     lcd.print("\4H BT CP \3T \4T C");
                     lcd.write(0);
                     lcd.print(" BC");
                    //    int myArray[7]={1,4,7,10,13,16,19};
                       //  byte i;
                         for (i=0;i<7;i++)
                             {
                               if (EEPROM_read_byte(45+i)==1) {lcd.setCursor(myArray[i],3);lcd.print(char(94));}
                               if (EEPROM_read_byte(45+i)==0) {lcd.setCursor(myArray[i],3);lcd.print(" ");}
                             }
                                    
               
            }
       }       
     while (regim<5);
     regim=0;  
}



//============Вход в Меню настроек и установок
void MenuSET()
{
    do
     {
       Button_read();
       delay(500);
       if (button==1 && flag==1) {regim++;flag=0;}
                 if (regim==1)// реж Установка TINMin и TINMax
                             {
                                TINMin=EEPROM_read_byte(0);
                                TINMax=EEPROM_read_byte(1);
                                lcd.setCursor(0, 0);
                                lcd.print("[1]\6CT TEM\4 BH\6TP\7  ");
                                lcd.setCursor(0, 1);
                                lcd.print("t");
                                lcd.print(char(223));
                                lcd.print("[min]=");
                                if (TINMin < 10) {lcd.print("0");}
                                lcd.print(TINMin);
                                lcd.print("          ");
                                lcd.setCursor(0, 2);
                                lcd.print("t");
                                lcd.print(char(223));
                                lcd.print("[max]=");
                                 if (TINMax < 10) lcd.print("0");
                                lcd.print(TINMax);
                                lcd.print("        + ");
                                lcd.setCursor(0,3);
                                lcd.print("MEH\1             <->");
                                lcd.blink();
                              
                                        if (button==5 && flag==1) posic++;
                                        if (button==2 && flag==1) posic--;
                                              if (posic==0)
                                                      {
                                                        lcd.setCursor(9,1);
                                                       if (button==3 && flag==1)
                                                           { if (TINMin < 99)  TINMin++;
                                                           else
                                                            TINMin = 0;
                                                            EEPROM_write_byte(0,TINMin);}
                                                           if (button==4 && flag==1) 
                                                           { if (TINMin > 0)  TINMin--;
                                                           else
                                                            TstartHour = 99;
                                                            EEPROM_write_byte(0,TINMin);} 
                                                      } 
                                              if (posic==1)
                                                      {//lcd.setCursor(19,1);
                                                        lcd.setCursor(9,2);
                                                         if (button==3 && flag==1)
                                                           { if (TINMax <99)  TINMax++;
                                                           else
                                                            TINMax = 0;
                                                            EEPROM_write_byte(1,TINMax);}
                                                         if (button==4 && flag==1) 
                                                           { if (TINMax > 0)  TINMax--;
                                                           else
                                                            TINMax = 99;
                                                            EEPROM_write_byte(1,TINMax);}
                                                       }       
                                              if (posic==2) posic=0;
                                   }
                              
                     if(regim==2)//режим Установка HumeTerraMin и HumeTerraMax
                                {
                                HumTerraINMin=EEPROM_read_byte(2);
                            //    HumTerraINMax=EEPROM_read_byte(3);
                                lcd.setCursor(0, 0);
                                lcd.print("[2]\6CT CEHCOP Water");
                                lcd.setCursor(0, 1);
                                lcd.print("HT%");
                                lcd.print("[min]=");
                                if (HumTerraINMin < 10) lcd.print("0");
                                lcd.print(HumTerraINMin);
                                lcd.print("         ");
                                lcd.setCursor(0, 2);
                                lcd.print("HT%");
                                lcd.print("[max]=");
                               // if (HumTerraINMax < 10) lcd.print("0");
                                lcd.print("100");
                                lcd.print("      + ");
                                lcd.setCursor(0,3);
                                lcd.print("MEH\1             <->");
                                
                                lcd.blink();
                                       
                                 lcd.setCursor(10,1);
                                 if (button==3 && flag==1)
                                    { if (HumTerraINMin < 99)  HumTerraINMin++;
                                       else
                                       HumTerraINMin = 0;
                                                          EEPROM_write_byte(2,HumTerraINMin);}
                                       if (button==4 && flag==1) 
                                    { if (HumTerraINMin > 0)  HumTerraINMin--;
                                        else
                                        HumTerraINMin = 99;
                                                          EEPROM_write_byte(2,HumTerraINMin);} 
                                             
                                }
                                
                      if(regim==3)// режим Установка Вроемени Таймера 1 полива
                                {
                                   Timer=EEPROM_read_byte(4);
                                   lcd.setCursor(0, 0);
                                   lcd.print("[3]\6CT TA\7MEP 1- ");
                                      if (Timer==0) lcd.print("B\2K");
                                      if (Timer==1) lcd.print("BK ");
                                   TstartHour=EEPROM_read_byte(5);
                                   TstartMinute=EEPROM_read_byte(6);
                                   TstopHour=EEPROM_read_byte(7);
                                   TstopMinute=EEPROM_read_byte(8);
                                   // Button_read(); //читаем кнопки // проверяем нажата ли кнопка
                                   lcd.setCursor(0, 1);
                                   lcd.print("BK\5=");
                                   //lcd.setCursor(4,1);
                                       if (TstartHour<10){lcd.print("0");}
                                   lcd.print(TstartHour);
                                   lcd.print(":");
                                       if (TstartMinute<10){lcd.print("0");}
                                   lcd.print(TstartMinute);
                                  lcd.print(" ");
                                   lcd.setCursor(10,1);
                                   lcd.print("B\2K\5=");
                                   lcd.setCursor(15,1);
                                       if (TstopHour<10){lcd.print("0");}
                                   lcd.print(TstopHour);
                                   lcd.print(":");
                                       if (TstopMinute<10){lcd.print("0");}
                                   lcd.print(TstopMinute);
                                   lcd.setCursor(0,2);
                                   lcd.print("\4 B C \3 \4 C B Bce +");
                             byte myArray[7]={0,2,4,6,8,10,12};
                             byte i;
                             for (i=0;i<7;i++)
                             {
                               if (EEPROM_read_byte(24+i)==1) {lcd.setCursor(myArray[i],3);lcd.print(char(94));}
                               if (EEPROM_read_byte(24+i)==0) {lcd.setCursor(myArray[i],3);lcd.print(" ");}
                             }
                             
                             
                             
                           /*      if (EEPROM_read_byte(24)==1) {lcd.setCursor(0,3);lcd.print(char(94));}
                                 if (EEPROM_read_byte(25)==1) {lcd.setCursor(2,3);lcd.print(char(94));}
                                 if (EEPROM_read_byte(26)==1) {lcd.setCursor(4,3);lcd.print(char(94));}
                                 if (EEPROM_read_byte(27)==1) {lcd.setCursor(6,3);lcd.print(char(94));}
                                 if (EEPROM_read_byte(28)==1) {lcd.setCursor(8,3);lcd.print(char(94));}
                                 if (EEPROM_read_byte(29)==1) {lcd.setCursor(10,3);lcd.print(char(94));}
                                 if (EEPROM_read_byte(30)==1) {lcd.setCursor(12,3);lcd.print(char(94));}                                 
                                 if (EEPROM_read_byte(24)==0) {lcd.setCursor(0,3);lcd.print(" ");}
                                 if (EEPROM_read_byte(25)==0) {lcd.setCursor(2,3);lcd.print(" ");}
                                 if (EEPROM_read_byte(26)==0) {lcd.setCursor(4,3);lcd.print(" ");}
                                 if (EEPROM_read_byte(27)==0) {lcd.setCursor(6,3);lcd.print(" ");}
                                 if (EEPROM_read_byte(28)==0) {lcd.setCursor(8,3);lcd.print(" ");}
                                 if (EEPROM_read_byte(29)==0) {lcd.setCursor(10,3);lcd.print(" ");}
                                 if (EEPROM_read_byte(30)==0) {lcd.setCursor(12,3);lcd.print(" ");}            */                     
                                 {lcd.setCursor(1,3);lcd.print(" ");}
                                 {lcd.setCursor(3,3);lcd.print(" ");}
                                  if (EEPROM_read_byte(24)==0 or EEPROM_read_byte(25)==0 or EEPROM_read_byte(26)==0 or EEPROM_read_byte(27)==0 or EEPROM_read_byte(28)==0 or EEPROM_read_byte(29)==0 or EEPROM_read_byte(30)==0) {lcd.setCursor(15,3);lcd.print(" ");}                                 
                                  if (EEPROM_read_byte(24)==1&&EEPROM_read_byte(25)==1&&EEPROM_read_byte(26)==1&&EEPROM_read_byte(27)==1&&EEPROM_read_byte(28)==1&&EEPROM_read_byte(29)==1&&EEPROM_read_byte(30)==1) {lcd.setCursor(15,3);lcd.print(char(94));}                                 
                                  lcd.setCursor(17,3);
                                  lcd.print("<->");
                                         
                                        lcd.blink();
                                        if (button==5 && flag==1) posic++;
                                        if (button==2 && flag==1) posic--;
                                              if (posic==0)
                                                      {
                                                        lcd.setCursor(19,0);
                                                       if (button==3 && flag==1)
                                                           { if (Timer < 1)  Timer++;
                                                           else
                                                            Timer = 0;
                                                            EEPROM_write_byte(4,Timer);}
                                                         if (button==4 && flag==1) 
                                                           { if (Timer > 0)  Timer--;
                                                           else
                                                            Timer = 1;
                                                            EEPROM_write_byte(4,Timer);} 
                                                       } 
                                              if (posic==1)
                                                       {
                                                        lcd.setCursor(5,1);
                                                       if (button==3 && flag==1)
                                                           { if (TstartHour < 23)  TstartHour++;
                                                           else
                                                            TstartHour = 0;
                                                            EEPROM_write_byte(5,TstartHour);}
                                                         if (button==4 && flag==1) 
                                                           { if (TstartHour > 0)  TstartHour--;
                                                           else
                                                            TstartHour = 23;
                                                            EEPROM_write_byte(5,TstartHour);} 
                                                      }       
                                               if (posic==2)
                                                       {
                                                         lcd.setCursor(8,1);
                                                         if (button==3 && flag==1)
                                                           { if (TstartMinute < 59)  TstartMinute++;
                                                           else
                                                            TstartMinute = 0;
                                                            EEPROM_write_byte(6,TstartMinute);}
                                                        if (button==4 && flag==1) 
                                                           { if (TstartMinute > 0)  TstartMinute--;
                                                           else
                                                            TstartMinute = 59;
                                                            EEPROM_write_byte(6,TstartMinute);}
                                                       }       
                                               if (posic==3)
                                                      {
                                                        lcd.setCursor(16,1);
                                                         if (button==3 && flag==1)
                                                           { if (TstopHour < 23)  TstopHour++;
                                                           else
                                                            TstopHour = 0;
                                                            EEPROM_write_byte(7,TstopHour);}
                                                         if (button==4 && flag==1) 
                                                           { if (TstopHour > 0)  TstopHour--;
                                                           else
                                                            TstopHour = 23;
                                                            EEPROM_write_byte(7,TstopHour);}
                                                      }       
                                               if (posic==4)
                                                      {
                                                       lcd.setCursor(19,1);
                                                       if (button==3 && flag==1)
                                                           { if (TstopMinute < 59)  TstopMinute++;
                                                           else
                                                            TstopMinute = 0;
                                                            EEPROM_write_byte(8,TstopMinute);}
                                                         if (button==4 && flag==1) 
                                                           { if (TstopMinute > 0)  TstopMinute--;
                                                           else
                                                            TstopMinute = 59;
                                                            EEPROM_write_byte(8,TstopMinute);}
                                                       }
                                               if (posic==5)  //устанавливаем дни недели для будильника "Все сразу"
                                                       {
                                                         lcd.setCursor(15,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (Tday < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                                  byte i;
                                                                  for (i=0;i<7;i++)  EEPROM_write_byte(24+i,Tday);
                                                          
                                                       }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (Tday > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                                 byte i;
                                                                 for (i=0;i<7;i++)  EEPROM_write_byte(24+i,Tday);
                                                            
                                                           } 
                                                      }
                                                if (posic==6)  //устанавливаем будильника ПH
                                                       {
                                                         lcd.setCursor(0,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(24) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(24,Tday);
                                                            }
                                                        if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(24) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(24,Tday);
                                                           } 
                                                      }
                                                if (posic==7)  //устанавливаем для будильника BT
                                                       {
                                                         lcd.setCursor(2,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(25) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(25,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(25) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(25,Tday);
                                                           } 
                                                      }
                                                  if (posic==8)  //устанавливаем для будильника СР
                                                       {
                                                         lcd.setCursor(4,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(26) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(26,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(26) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(26,Tday);
                                                           } 
                                                      }
                                                 if (posic==9)  //устанавливаем для будильника ЧТ
                                                       {
                                                         lcd.setCursor(6,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(27) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(27,Tday);
                                                            }
                                                        if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(27) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(27,Tday);
                                                           } 
                                                      }
                                                 if (posic==10)  //устанавливаем для будильника ПТ
                                                       {
                                                         lcd.setCursor(8,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(28) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(28,Tday);
                                                            }
                                                        if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(28) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(28,Tday);
                                                           } 
                                                      }
                                                 if (posic==11)  //устанавливаем для будильника СБ
                                                       {
                                                         lcd.setCursor(10,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(29) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(29,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(29) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(29,Tday);
                                                           } 
                                                      }
                                                 if (posic==12)  //устанавливаем для будильника ВС
                                                       {
                                                         lcd.setCursor(12,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(30) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(30,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(30) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(30,Tday);
                                                           } 
                                                      }
                                               
                                               
                                               
                                               if (posic==13) posic=0;//возврат в начало
                                         }
                              if(regim==4)// режим Установка Вроемени Таймера 2 полива
                                { 
                                   Timer2=EEPROM_read_byte(9);
                                   lcd.setCursor(0, 0);
                                   lcd.print("[4]\6CT TA\7MEP 2- ");
                                      if (Timer2==0) lcd.print("B\2K");
                                      if (Timer2==1) lcd.print("BK ");
                                   TstartHour2=EEPROM_read_byte(10);
                                   TstartMinute2=EEPROM_read_byte(11);  
                                   TstopHour2=EEPROM_read_byte(12);
                                   TstopMinute2=EEPROM_read_byte(13);
                                   //   Button_read(); //читаем кнопки // проверяем нажата ли кнопка
                                   lcd.setCursor(0, 1);
                                   lcd.print("BK\5=");
                                   //lcd.setCursor(4,1);
                                       if (TstartHour2<10){lcd.print("0");}
                                   lcd.print(TstartHour2);
                                   lcd.print(":");
                                       if (TstartMinute2<10){lcd.print("0");}
                                   lcd.print(TstartMinute2);
                                  lcd.print(" ");
                                   lcd.setCursor(10,1);
                                   lcd.print("B\2K\5=");
                                   lcd.setCursor(15,1);
                                       if (TstopHour2<10){lcd.print("0");}
                                   lcd.print(TstopHour2);
                                   lcd.print(":");
                                       if (TstopMinute2<10){lcd.print("0");}
                                   lcd.print(TstopMinute2);
                                   lcd.setCursor(0,2);
                                   lcd.print("\4 B C \3 \4 C B Bce +");
                                 
                                   byte myArray[7]={0,2,4,6,8,10,12};
                                   byte i;
                                       for (i=0;i<7;i++)
                                       {
                                         if (EEPROM_read_byte(31+i)==1) {lcd.setCursor(myArray[i],3);lcd.print(char(94));}
                                         if (EEPROM_read_byte(31+i)==0) {lcd.setCursor(myArray[i],3);lcd.print(" ");}
                                       }                                               
                           
                                 {lcd.setCursor(1,3);lcd.print(" ");}
                                 {lcd.setCursor(3,3);lcd.print(" ");}
                                  if (EEPROM_read_byte(31)==0 or EEPROM_read_byte(32)==0 or EEPROM_read_byte(33)==0 or EEPROM_read_byte(34)==0 or EEPROM_read_byte(35)==0 or EEPROM_read_byte(36)==0 or EEPROM_read_byte(37)==0) {lcd.setCursor(15,3);lcd.print(" ");}                                 
                                  if (EEPROM_read_byte(31)==1&&EEPROM_read_byte(32)==1&&EEPROM_read_byte(33)==1&&EEPROM_read_byte(34)==1&&EEPROM_read_byte(35)==1&&EEPROM_read_byte(36)==1&&EEPROM_read_byte(37)==1) {lcd.setCursor(15,3);lcd.print(char(94));}                                 
                                  lcd.setCursor(17,3);
                                  lcd.print("<->");
                                         
                                        lcd.blink();
                                        if (button==5 && flag==1) posic++;
                                        if (button==2 && flag==1) posic--;
                                              if (posic==0)
                                                      {
                                                        lcd.setCursor(19,0);
                                                       if (button==3 && flag==1)
                                                           { if (Timer2 < 1)  Timer2++;
                                                           else
                                                            Timer2 = 0;
                                                            EEPROM_write_byte(9,Timer2);}
                                                         if (button==4 && flag==1) 
                                                           { if (Timer2 > 0)  Timer2--;
                                                           else
                                                            Timer2 = 1;
                                                            EEPROM_write_byte(9,Timer2);} 
                                                       } 
                                              if (posic==1)
                                                       {
                                                        lcd.setCursor(5,1);
                                                       if (button==3 && flag==1)
                                                           { if (TstartHour2 < 23)  TstartHour2++;
                                                           else
                                                            TstartHour2 = 0;
                                                            EEPROM_write_byte(10,TstartHour2);}
                                                         if (button==4 && flag==1) 
                                                           { if (TstartHour2 > 0)  TstartHour2--;
                                                           else
                                                            TstartHour2 = 23;
                                                            EEPROM_write_byte(10,TstartHour2);} 
                                                      }       
                                               if (posic==2)
                                                       {
                                                         lcd.setCursor(8,1);
                                                         if (button==3 && flag==1)
                                                           { if (TstartMinute2 < 59)  TstartMinute2++;
                                                           else
                                                            TstartMinute2 = 0;
                                                            EEPROM_write_byte(11,TstartMinute2);}
                                                         if (button==4 && flag==1) 
                                                           { if (TstartMinute2 > 0)  TstartMinute2--;
                                                           else
                                                            TstartMinute2 = 59;
                                                            EEPROM_write_byte(11,TstartMinute2);}
                                                       }       
                                               if (posic==3)
                                                      {
                                                        lcd.setCursor(16,1);
                                                         if (button==3 && flag==1)
                                                           { if (TstopHour2 < 23)  TstopHour2++;
                                                           else
                                                            TstopHour2 = 0;
                                                            EEPROM_write_byte(12,TstopHour2);}
                                                         if (button==4 && flag==1) 
                                                           { if (TstopHour2 > 0)  TstopHour2--;
                                                           else
                                                            TstopHour2 = 23;
                                                            EEPROM_write_byte(12,TstopHour2);}
                                                      }       
                                               if (posic==4)
                                                      {
                                                       lcd.setCursor(19,1);
                                                       if (button==3 && flag==1)
                                                           { if (TstopMinute2 < 59)  TstopMinute2++;
                                                           else
                                                            TstopMinute2 = 0;
                                                            EEPROM_write_byte(13,TstopMinute2);}
                                                         if (button==4 && flag==1) 
                                                           { if (TstopMinute2 > 0)  TstopMinute2--;
                                                           else
                                                            TstopMinute2 = 59;
                                                            EEPROM_write_byte(13,TstopMinute2);}
                                                       }
                                               if (posic==5)  //устанавливаем дни недели для будильника "Все сразу"
                                                       {
                                                         lcd.setCursor(15,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (Tday < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                             byte i;
                                                                  for (i=0;i<7;i++)  EEPROM_write_byte(31+i,Tday);
                                                         
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (Tday > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                             byte i;
                                                                  for (i=0;i<7;i++)  EEPROM_write_byte(31+i,Tday);
                                                            
                                                         } 
                                                      }
                                                if (posic==6)  //устанавливаем будильника ПH
                                                       {
                                                         lcd.setCursor(0,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(31) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(31,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(31) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(31,Tday);
                                                           } 
                                                      }
                                                if (posic==7)  //устанавливаем для будильника BT
                                                       {
                                                         lcd.setCursor(2,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(32) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(32,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(32) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(32,Tday);
                                                           } 
                                                      }
                                                  if (posic==8)  //устанавливаем для будильника СР
                                                       {
                                                         lcd.setCursor(4,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(33) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(33,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(33) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(33,Tday);
                                                           } 
                                                      }
                                                 if (posic==9)  //устанавливаем для будильника ЧТ
                                                       {
                                                         lcd.setCursor(6,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(34) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(34,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(34) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(34,Tday);
                                                           } 
                                                      }
                                                 if (posic==10)  //устанавливаем для будильника ПТ
                                                       {
                                                         lcd.setCursor(8,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(35) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(35,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(35) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(35,Tday);
                                                           } 
                                                      }
                                                 if (posic==11)  //устанавливаем для будильника СБ
                                                       {
                                                         lcd.setCursor(10,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(36) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(36,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(36) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(36,Tday);
                                                           } 
                                                      }
                                                 if (posic==12)  //устанавливаем для будильника ВС
                                                       {
                                                         lcd.setCursor(12,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(37) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(37,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(37) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(37,Tday);
                                                           } 
                                                      }
                                               
                                               
                                               
                                               if (posic==13) posic=0;//возврат в начало
                                         }           
                                         
                              if(regim==5)// режим Установка Вроемени Таймера 3 полива
                                {  
                                   Timer3=EEPROM_read_byte(14);
                                   lcd.setCursor(0, 0);
                                   lcd.print("[5]\6CT TA\7MEP 3- ");
                                      if (Timer3==0) lcd.print("B\2K");
                                      if (Timer3==1) lcd.print("BK ");
                                   TstartHour3=EEPROM_read_byte(15);
                                   TstartMinute3=EEPROM_read_byte(16);
                                   TstopHour3=EEPROM_read_byte(17);
                                   TstopMinute3=EEPROM_read_byte(18);
                                     
                                //   Button_read(); //читаем кнопки // проверяем нажата ли кнопка
                                   lcd.setCursor(0, 1);
                                   lcd.print("BK\5=");
                                   //lcd.setCursor(4,1);
                                       if (TstartHour3<10){lcd.print("0");}
                                   lcd.print(TstartHour3);
                                   lcd.print(":");
                                       if (TstartMinute3<10){lcd.print("0");}
                                   lcd.print(TstartMinute3);
                                  lcd.print(" ");
                                   lcd.setCursor(10,1);
                                   lcd.print("B\2K\5=");
                                   lcd.setCursor(15,1);
                                       if (TstopHour3<10){lcd.print("0");}
                                   lcd.print(TstopHour3);
                                   lcd.print(":");
                                       if (TstopMinute3<10){lcd.print("0");}
                                   lcd.print(TstopMinute3);
                                   lcd.setCursor(0,2);
                                   lcd.print("\4 B C \3 \4 C B Bce +");
                                     byte myArray[7]={0,2,4,6,8,10,12};
                                     byte i;
                                     for (i=0;i<7;i++)
                                     {
                                       if (EEPROM_read_byte(38+i)==1) {lcd.setCursor(myArray[i],3);lcd.print(char(94));}
                                       if (EEPROM_read_byte(38+i)==0) {lcd.setCursor(myArray[i],3);lcd.print(" ");}
                                     }
                                       
                                 {lcd.setCursor(1,3);lcd.print(" ");}
                                 {lcd.setCursor(3,3);lcd.print(" ");}
                                  if (EEPROM_read_byte(38)==0 or EEPROM_read_byte(39)==0 or EEPROM_read_byte(40)==0 or EEPROM_read_byte(41)==0 or EEPROM_read_byte(42)==0 or EEPROM_read_byte(43)==0 or EEPROM_read_byte(44)==0) {lcd.setCursor(15,3);lcd.print(" ");}                                 
                                  if (EEPROM_read_byte(38)==1&&EEPROM_read_byte(39)==1&&EEPROM_read_byte(40)==1&&EEPROM_read_byte(41)==1&&EEPROM_read_byte(42)==1&&EEPROM_read_byte(43)==1&&EEPROM_read_byte(44)==1) {lcd.setCursor(15,3);lcd.print(char(94));}                                 
                                  lcd.setCursor(17,3);
                                  lcd.print("<->");
                                         
                                        lcd.blink();
                                        if (button==5 && flag==1) posic++;
                                        if (button==2 && flag==1) posic--;
                                              if (posic==0)
                                                      {
                                                        lcd.setCursor(19,0);
                                                       if (button==3 && flag==1)
                                                           { if (Timer3 < 1)  Timer3++;
                                                           else
                                                            Timer3 = 0;
                                                            EEPROM_write_byte(14,Timer2);}
                                                         if (button==4 && flag==1) 
                                                           { if (Timer3 > 0)  Timer3--;
                                                           else
                                                            Timer3 = 1;
                                                            EEPROM_write_byte(14,Timer3);} 
                                                       } 
                                              if (posic==1)
                                                       {
                                                        lcd.setCursor(5,1);
                                                       if (button==3 && flag==1)
                                                           { if (TstartHour3 < 23)  TstartHour3++;
                                                           else
                                                            TstartHour3 = 0;
                                                            EEPROM_write_byte(15,TstartHour3);}
                                                         if (button==4 && flag==1) 
                                                           { if (TstartHour3 > 0)  TstartHour3--;
                                                           else
                                                            TstartHour3 = 23;
                                                            EEPROM_write_byte(15,TstartHour3);} 
                                                      }       
                                               if (posic==2)
                                                       {
                                                         lcd.setCursor(8,1);
                                                         if (button==3 && flag==1)
                                                           { if (TstartMinute3 < 59)  TstartMinute3++;
                                                           else
                                                            TstartMinute3 = 0;
                                                            EEPROM_write_byte(16,TstartMinute3);}
                                                         if (button==4 && flag==1) 
                                                           { if (TstartMinute3 > 0)  TstartMinute3--;
                                                           else
                                                            TstartMinute3 = 59;
                                                            EEPROM_write_byte(16,TstartMinute3);}
                                                       }       
                                               if (posic==3)
                                                      {
                                                        lcd.setCursor(16,1);
                                                         if (button==3 && flag==1)
                                                           { if (TstopHour3 < 23)  TstopHour3++;
                                                           else
                                                            TstopHour3 = 0;
                                                            EEPROM_write_byte(17,TstopHour3);}
                                                         if (button==4 && flag==1) 
                                                           { if (TstopHour3 > 0)  TstopHour3--;
                                                           else
                                                            TstopHour3 = 23;
                                                            EEPROM_write_byte(17,TstopHour3);}
                                                      }       
                                               if (posic==4)
                                                      {
                                                       lcd.setCursor(19,1);
                                                       if (button==3 && flag==1)
                                                           { if (TstopMinute3 < 59)  TstopMinute3++;
                                                           else
                                                            TstopMinute3 = 0;
                                                            EEPROM_write_byte(18,TstopMinute3);}
                                                         if (button==4 && flag==1) 
                                                           { if (TstopMinute3 > 0)  TstopMinute3--;
                                                           else
                                                            TstopMinute3 = 59;
                                                            EEPROM_write_byte(18,TstopMinute3);}
                                                       }
                                               if (posic==5)  //устанавливаем дни недели для будильника "Все сразу"
                                                       {
                                                         lcd.setCursor(15,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (Tday < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            byte i;
                                                                  for (i=0;i<7;i++)  EEPROM_write_byte(38+i,Tday);
                                                           
                                                            
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (Tday > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            
                                                             byte i;
                                                                  for (i=0;i<7;i++)  EEPROM_write_byte(38+i,Tday);
                                                            
                                                           } 
                                                      }
                                                if (posic==6)  //устанавливаем будильника ПH
                                                       {
                                                         lcd.setCursor(0,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(38) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(38,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(38) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(38,Tday);
                                                           } 
                                                      }
                                                if (posic==7)  //устанавливаем для будильника BT
                                                       {
                                                         lcd.setCursor(2,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(39) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(39,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(39) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(39,Tday);
                                                           } 
                                                      }
                                                  if (posic==8)  //устанавливаем для будильника СР
                                                       {
                                                         lcd.setCursor(4,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(40) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(40,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(40) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(40,Tday);
                                                           } 
                                                      }
                                                 if (posic==9)  //устанавливаем для будильника ЧТ
                                                       {
                                                         lcd.setCursor(6,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(41) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(41,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(41) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(41,Tday);
                                                           } 
                                                      }
                                                 if (posic==10)  //устанавливаем для будильника ПТ
                                                       {
                                                         lcd.setCursor(8,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(42) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(42,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(42) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(42,Tday);
                                                           } 
                                                      }
                                                 if (posic==11)  //устанавливаем для будильника СБ
                                                       {
                                                         lcd.setCursor(10,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(43) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(43,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(43) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(43,Tday);
                                                           } 
                                                      }
                                                 if (posic==12)  //устанавливаем для будильника ВС
                                                       {
                                                         lcd.setCursor(12,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(44) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(44,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(44) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(44,Tday);
                                                           } 
                                                      }
                                               
                                               
                                               
                                               if (posic==13) posic=0;//возврат в начало
                                         }
                            
                            if(regim==6)// режим Установка Вроемени Таймера 4 полива
                                {               
                                   Timer4=EEPROM_read_byte(19);
                                   lcd.setCursor(0, 0);
                                   lcd.print("[6]\6CT TA\7MEP 4- ");
                                      if (Timer4==0) lcd.print("B\2K");
                                      if (Timer4==1) lcd.print("BK ");
                                   TstartHour4=EEPROM_read_byte(20);
                                   TstartMinute4=EEPROM_read_byte(21);
                                   TstopHour4=EEPROM_read_byte(22);
                                   TstopMinute4=EEPROM_read_byte(23);
                                     
                                //   Button_read(); //читаем кнопки // проверяем нажата ли кнопка
                                   lcd.setCursor(0, 1);
                                   lcd.print("BK\5=");
                                   //lcd.setCursor(4,1);
                                       if (TstartHour4<10){lcd.print("0");}
                                   lcd.print(TstartHour4);
                                   lcd.print(":");
                                       if (TstartMinute4<10){lcd.print("0");}
                                   lcd.print(TstartMinute4);
                                  lcd.print(" ");
                                   lcd.setCursor(10,1);
                                   lcd.print("B\2K\5=");
                                   lcd.setCursor(15,1);
                                       if (TstopHour4<10){lcd.print("0");}
                                   lcd.print(TstopHour4);
                                   lcd.print(":");
                                       if (TstopMinute4<10){lcd.print("0");}
                                   lcd.print(TstopMinute4);
                                   lcd.setCursor(0,2);
                                   lcd.print("\4 B C \3 \4 C B Bce +");
                                     byte myArray[7]={0,2,4,6,8,10,12};
                                     byte i;
                                     for (i=0;i<7;i++)
                                       {
                                         if (EEPROM_read_byte(45+i)==1) {lcd.setCursor(myArray[i],3);lcd.print(char(94));}
                                         if (EEPROM_read_byte(45+i)==0) {lcd.setCursor(myArray[i],3);lcd.print(" ");}
                                       }
                                                
                                       
                                 {lcd.setCursor(1,3);lcd.print(" ");}
                                 {lcd.setCursor(3,3);lcd.print(" ");}
                                  if (EEPROM_read_byte(45)==0 or EEPROM_read_byte(46)==0 or EEPROM_read_byte(47)==0 or EEPROM_read_byte(48)==0 or EEPROM_read_byte(49)==0 or EEPROM_read_byte(50)==0 or EEPROM_read_byte(51)==0) {lcd.setCursor(15,3);lcd.print(" ");}                                 
                                  if (EEPROM_read_byte(45)==1&&EEPROM_read_byte(46)==1&&EEPROM_read_byte(47)==1&&EEPROM_read_byte(48)==1&&EEPROM_read_byte(49)==1&&EEPROM_read_byte(50)==1&&EEPROM_read_byte(51)==1) {lcd.setCursor(15,3);lcd.print(char(94));}                                 
                                  lcd.setCursor(17,3);
                                  lcd.print("<->");
                                         
                                        lcd.blink();
                                        if (button==5 && flag==1) posic++;
                                        if (button==2 && flag==1) posic--;
                                              if (posic==0)
                                                      {
                                                        lcd.setCursor(19,0);
                                                       if (button==3 && flag==1)
                                                           { if (Timer4 < 1)  Timer4++;
                                                           else
                                                            Timer4 = 0;
                                                            EEPROM_write_byte(19,Timer4);}
                                                         if (button==4 && flag==1) 
                                                           { if (Timer4 > 0)  Timer4--;
                                                           else
                                                            Timer4 = 1;
                                                            EEPROM_write_byte(19,Timer4);} 
                                                       } 
                                              if (posic==1)
                                                       {
                                                        lcd.setCursor(5,1);
                                                       if (button==3 && flag==1)
                                                           { if (TstartHour4 < 23)  TstartHour4++;
                                                           else
                                                            TstartHour4 = 0;
                                                            EEPROM_write_byte(20,TstartHour4);}
                                                         if (button==4 && flag==1) 
                                                           { if (TstartHour4 > 0)  TstartHour4--;
                                                           else
                                                            TstartHour4 = 23;
                                                            EEPROM_write_byte(20,TstartHour);} 
                                                      }       
                                               if (posic==2)
                                                       {
                                                         lcd.setCursor(8,1);
                                                         if (button==3 && flag==1)
                                                           { if (TstartMinute4 < 59)  TstartMinute4++;
                                                           else
                                                            TstartMinute4 = 0;
                                                            EEPROM_write_byte(21,TstartMinute4);}
                                                         if (button==4 && flag==1) 
                                                           { if (TstartMinute4 > 0)  TstartMinute4--;
                                                           else
                                                            TstartMinute4 = 59;
                                                            EEPROM_write_byte(21,TstartMinute4);}
                                                       }       
                                               if (posic==3)
                                                      {
                                                        lcd.setCursor(16,1);
                                                         if (button==3 && flag==1)
                                                           { if (TstopHour4 < 23)  TstopHour4++;
                                                           else
                                                            TstopHour4 = 0;
                                                            EEPROM_write_byte(22,TstopHour4);}
                                                         if (button==4 && flag==1) 
                                                           { if (TstopHour4 > 0)  TstopHour4--;
                                                           else
                                                            TstopHour4 = 23;
                                                            EEPROM_write_byte(22,TstopHour4);}
                                                      }       
                                               if (posic==4)
                                                      {
                                                       lcd.setCursor(19,1);
                                                       if (button==3 && flag==1)
                                                           { if (TstopMinute4 < 59)  TstopMinute4++;
                                                           else
                                                            TstopMinute4 = 0;
                                                            EEPROM_write_byte(23,TstopMinute4);}
                                                         if (button==4 && flag==1) 
                                                           { if (TstopMinute4 > 0)  TstopMinute4--;
                                                           else
                                                            TstopMinute4 = 59;
                                                            EEPROM_write_byte(23,TstopMinute4);}
                                                       }
                                               if (posic==5)  //устанавливаем дни недели для будильника "Все сразу"
                                                       {
                                                         lcd.setCursor(15,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (Tday < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            byte i;
                                                                  for (i=0;i<7;i++)  EEPROM_write_byte(45+i,Tday);
                                                         
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (Tday > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                             byte i;
                                                                  for (i=0;i<7;i++)  EEPROM_write_byte(45+i,Tday);
                                                            
                                                        
                                                           } 
                                                      }
                                                if (posic==6)  //устанавливаем будильника ПH
                                                       {
                                                         lcd.setCursor(0,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(45) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(45,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(45) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(45,Tday);
                                                           } 
                                                      }
                                                if (posic==7)  //устанавливаем для будильника BT
                                                       {
                                                         lcd.setCursor(2,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(46) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(46,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(46) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(46,Tday);
                                                           } 
                                                      }
                                                  if (posic==8)  //устанавливаем для будильника СР
                                                       {
                                                         lcd.setCursor(4,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(47) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(47,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(47) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(47,Tday);
                                                           } 
                                                      }
                                                 if (posic==9)  //устанавливаем для будильника ЧТ
                                                       {
                                                         lcd.setCursor(6,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(48) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(48,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(48) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(48,Tday);
                                                           } 
                                                      }
                                                 if (posic==10)  //устанавливаем для будильника ПТ
                                                       {
                                                         lcd.setCursor(8,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(49) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(49,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(49) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(49,Tday);
                                                           } 
                                                      }
                                                 if (posic==11)  //устанавливаем для будильника СБ
                                                       {
                                                         lcd.setCursor(10,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(50) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(50,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(50) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(50,Tday);
                                                           } 
                                                      }
                                                 if (posic==12)  //устанавливаем для будильника ВС
                                                       {
                                                         lcd.setCursor(12,2);
                                                         if (button==3 && flag==1)
                                                           { 
                                                           if (EEPROM_read_byte(51) < 1)  Tday++;
                                                           else
                                                           Tday=0;
                                                            EEPROM_write_byte(51,Tday);
                                                            }
                                                         if (button==4 && flag==1) 
                                                           {
                                                            if (EEPROM_read_byte(51) > 0)  Tday--;
                                                           else
                                                            Tday=1;
                                                            EEPROM_write_byte(51,Tday);
                                                           } 
                                                      }
                                               
                                               
                                               
                                               if (posic==13) posic=0;//возврат в начало
                                         }
                                         
                              if (regim==7) //Режим установки часов
                                         { 
                                           lcd.setCursor(0, 0);
                                           lcd.print("[7]\6CT \3ACOB        ");
                                        //   Button_read(); //читаем кнопки // проверяем нажата ли кнопка
                                           lcd.setCursor(0, 1);
                                              if (t.date<10){lcd.print("0");}
                                           lcd.print(t.date);
                                           lcd.print("/");
                                           //lcd.setCursor(3,1);
                                           if (t.mon<10){lcd.print("0");}
                                           lcd.print(t.mon);
                                           lcd.print("/");
                                           lcd.print(t.year);
                                           lcd.print("  ");
                                             if (t.dow==1) lcd.print("\4H      ");
                                             if (t.dow==2) lcd.print("BT      ");
                                             if (t.dow==3) lcd.print("CP      ");
                                             if (t.dow==4) lcd.print("\3T      ");
                                             if (t.dow==5) lcd.print("\4T      ");
                                             if (t.dow==6) {lcd.print("C");lcd.write(0);lcd.print("      ");}
                                             if (t.dow==7) lcd.print("BC      ");
                                           lcd.setCursor(0,2);
                                               if (t.hour<10){lcd.print("0");}
                                           lcd.print(t.hour);
                                           lcd.print(":");
                                               if (t.min<10){lcd.print("0");}
                                           lcd.print(t.min);
                                           lcd.print(":");
                                               if (t.sec<10){lcd.print("0");}
                                           lcd.print(t.sec);
                                           lcd.setCursor(8,2);
                                           lcd.print("          + ");
                                           lcd.setCursor(0,3);
                                           lcd.print("MEH\1             <->");
                                           lcd.blink();
                                             
                                                if (button==5 && flag==1) posic++;
                                                if (button==2 && flag==1) posic--;
                                                      if (posic==0)
                                                              {
                                                                lcd.setCursor(1,1);
                                                               if (button==3 && flag==1)
                                                                   { if (t.date < 31)  t.date++;
                                                                   else
                                                                    t.date = 0;
                                                                   rtc.setDate(t.date,t.mon,t.year);
                                                                   timeDS3231();}
                                                                if (button==4 && flag==1)
                                                                  { if (t.date > 1)  t.date--;
                                                                   else
                                                                    t.date = 31;
                                                                   rtc.setDate(t.date,t.mon,t.year);
                                                                   timeDS3231();}
                                                                  // timeDS3231();
                                                              } 
                                                              
                                                      if (posic==1)
                                                              {
                                                                lcd.setCursor(4,1);
                                                               if (button==3 && flag==1)
                                                                   { if (t.mon < 12)  t.mon++;
                                                                   else
                                                                    t.mon = 1;
                                                                   rtc.setDate(t.date,t.mon,t.year);
                                                                   timeDS3231();}
                                                                 if (button==4 && flag==1)
                                                                  { if (t.mon > 1)  t.mon--;
                                                                   else
                                                                    t.mon = 12;
                                                                   rtc.setDate(t.date,t.mon,t.year);
                                                                   timeDS3231();}
                                                                  // timeDS3231();
                                                              }       
                                        
                                                       if (posic==2)
                                                              {
                                                                lcd.setCursor(9,1);
                                                               if (button==3 && flag==1)
                                                                 { if (t.year < 2100)  t.year++;
                                                                   else
                                                                    t.year = 2000;
                                                                   rtc.setDate(t.date,t.mon,t.year);
                                                                   timeDS3231();}
                                                               if (button==4 && flag==1)
                                                                 { if (t.year > 2000)  t.year--;
                                                                   else
                                                                    t.year = 2100;
                                                                   rtc.setDate(t.date,t.mon,t.year);
                                                                   timeDS3231();}
                                                                   //timeDS3231();
                                                              }       
                                                              
                                                       if (posic==3)
                                                              {
                                                                lcd.setCursor(13,1);
                                                               if (button==3 && flag==1)
                                                                 { if (t.dow < 7)  t.dow++;
                                                                   else
                                                                    t.dow = 1;
                                                                   rtc.setDOW(t.dow);
                                                                   timeDS3231();}
                                                               if (button==4 && flag==1)
                                                                 { if (t.dow > 1)  t.dow--;
                                                                   else
                                                                    t.dow = 7;
                                                                   rtc.setDOW(t.dow);
                                                                   timeDS3231();}
                                                                   //timeDS3231();
                                                              }              
                                                       if (posic==4)
                                                              {
                                                               lcd.setCursor(1,2);
                                                               if (button==3 && flag==1)
                                                                 { if (t.hour < 23)  t.hour++;
                                                                   else
                                                                    t.hour = 0;
                                                                   rtc.setTime(t.hour,t.min,t.sec);
                                                                   timeDS3231();}
                                                               if (button==4 && flag==1)
                                                                 { if (t.hour > 0)  t.hour--;
                                                                   else
                                                                    t.hour = 23;
                                                                    rtc.setTime(t.hour,t.min,t.sec);
                                                                   timeDS3231();}
                                                                   //timeDS3231();
                                                              }       
                                                        if (posic==5)
                                                              {
                                                               lcd.setCursor(4,2);
                                                               if (button==3 && flag==1)
                                                                 { if (t.min < 59)  t.min++;
                                                                   else
                                                                    t.min = 0;
                                                                   rtc.setTime(t.hour,t.min,t.sec);
                                                                   timeDS3231();}
                                                               if (button==4 && flag==1)
                                                                 { if (t.min > 0)  t.min--;
                                                                   else
                                                                    t.min = 59;
                                                                    rtc.setTime(t.hour,t.min,t.sec);
                                                                   timeDS3231();}
                                                                   //timeDS3231();
                                                              }              
                                                      /*   if (posic==6)
                                                              {
                                                               lcd.setCursor(7,2);
                                                               if (button==3 && flag==1)
                                                                 { if (t.sec < 59)  t.sec++;
                                                                   else
                                                                    t.sec = 0;
                                                                   rtc.setTime(t.hour,t.min,t.sec);
                                                                   timeDS3231();}
                                                               if (button==4 && flag==1)
                                                                 { if (t.sec > 0)  t.sec--;
                                                                   else
                                                                    t.sec = 23;
                                                                    rtc.setTime(t.hour,t.min,t.sec);
                                                                   timeDS3231();}
                                                              }             
                                                       */        
                                                 if (posic==6) posic=0;
    
                                               }

     }
     while (regim<8); //////////////////////
     lcd.clear();
     lcd.noBlink();
     regim=0;
     posic=0; 
    
}    

void TimePrint() 
 {
   lcd.setCursor(11, 2);
      if (t.dow==1) lcd.print("\4H ");
      if (t.dow==2) lcd.print("BT ");
      if (t.dow==3) lcd.print("CP ");
      if (t.dow==4) lcd.print("\3T ");
      if (t.dow==5) lcd.print("\4T ");
      if (t.dow==6) {lcd.print("C");lcd.write(0);lcd.print(" ");}
      if (t.dow==7) lcd.print("BC "); 
     if (t.hour<10) lcd.print('0');
   lcd.print(t.hour,DEC);
   lcd.print(':');
     if (t.min<10) lcd.print('0');
   lcd.print(t.min,DEC);
   lcd.print(" ");
  }
 
 //=========== Обработки печати и вывода на дисплейчик (Влажности воздуха, температуры воздуха , влажности земли)
void printDin()
{
      lcd.setCursor(0, 0);
      lcd.print("H%=");
        if (HumIn<10) lcd.print('0'); 
      lcd.print(int(HumIn));
      lcd.print(" ");
      lcd.setCursor(6, 0);
      lcd.print("t"); 
      lcd.print((char)223);
      lcd.print("=");
        if (TIn<10) lcd.print('0');
      lcd.print(int(TIn));
      lcd.print(" ");
      lcd.setCursor(12,0);
      lcd.print("HT=");  
      lcd.print(HumTerra);
      lcd.print("%   ");
    }  
//=========== Обработки печати и вывода на дисплейчик СТАТИКИ
void printStat ()
   {
      lcd.setCursor(0,3);
      lcd.print("MEH BEHT>");
      lcd.setCursor(13,3);
      lcd.print("T.\4O\5>>");
      lcd.setCursor(0,1); 
      lcd.print("\4O\5-1[");
      lcd.setCursor(7,1);lcd.print("]2[");
      lcd.setCursor(11,1);lcd.print("]3[");
      lcd.setCursor(15,1);lcd.print("]4[");
      lcd.setCursor(19,1);lcd.print("]");  
      lcd.setCursor(0,2);
      lcd.print("BEHT");  
        if (flagActManual==0) {lcd.setCursor(4,2);lcd.print("[ABTO] ");}
        if (flagActManual==1) {lcd.setCursor(4,2);lcd.print("[P\6\3H] ");}
   }

void open_windows() //открываем форточку
{  
  do
  {
  digitalWrite(Actuator_relay, HIGH); //открываем 1-ю форточку
  UVinGet();
  Serial.println(UVinTMP);
  }
  while (ActuatorStatus);
  digitalWrite(Actuator_relay, LOW);
 delay(2000);
  do
  {
  digitalWrite(Actuator_relay2, HIGH); //открываем 2-ю форточку
    UVinGet();
  Serial.println(UVinTMP);
  }
   while (ActuatorStatus);
  digitalWrite(Actuator_relay2, LOW);
  
 
 /* digitalWrite(Actuator_relay, HIGH); //открываем 1-ю форточку
  //digitalWrite(Actuator_relay4, LOW);
  delay(10000); //время на открывание
  digitalWrite(Actuator_relay, LOW);
  delay(1000);
  digitalWrite(Actuator_relay2, HIGH); //открываем 2-ю форточку
 // digitalWrite(Actuator_relay3, LOW);
   delay(10000); //время на открывание
  digitalWrite(Actuator_relay2, LOW);*/

}
void close_windows() //зарываем форточку
{
  do
  {
  digitalWrite(Actuator_relay4, HIGH); //закрываем 1-ю форточку
    UVinGet();
  Serial.println(UVinTMP);
  }
    while (ActuatorStatus);
  digitalWrite(Actuator_relay4, LOW);
 delay(2000);
  do
  {
  digitalWrite(Actuator_relay3, HIGH); //Закрываем 2-ю форточку
    UVinGet();
  Serial.println(UVinTMP);
  }
    while (ActuatorStatus);
  digitalWrite(Actuator_relay3, LOW);
  
  /*
 // digitalWrite(Actuator_relay, LOW); //Закрываем 1-ю форточку
 digitalWrite(Actuator_relay4, HIGH);
   delay(10000);; //время на закрывание
 digitalWrite(Actuator_relay4, LOW);
 delay(1000);
 // digitalWrite(Actuator_relay2, LOW); //Закрываем 2-ю форточку
  digitalWrite(Actuator_relay3, HIGH);
   delay(10000); //время на закрывание
  digitalWrite(Actuator_relay3, LOW);*/
}

void loop()
{
 timeDS3231();
 TInGet();
 HumInGet();
 HumTerraGet();
 //UVinGet();
 Actuator();
 Irrigation();
 StaticButton();
 TimePrint();
 printDin();
 printStat();
}

 

som1211
Offline
Зарегистрирован: 23.01.2016

Здравствуйте ,Сергей! СПАСИБО за ваш труд! Уже месяц ваш код работает в тепличке. Столкнулся с одной проблемой. При каких-то помехах в питании ( у меня стоит обогреватель через термостат,грешу на реле) управление актуатором переходит в ручной режим .Форточки закрыты ,чуть не потерял томаты.Пришлось убирать из кода ручной режим управления актуатором .

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

som1211 пишет:
Здравствуйте ,Сергей! СПАСИБО за ваш труд! Уже месяц ваш код работает в тепличке. Столкнулся с одной проблемой. При каких-то помехах в питании ( у меня стоит обогреватель через термостат,грешу на реле) управление актуатором переходит в ручной режим .Форточки закрыты ,чуть не потерял томаты.Пришлось убирать из кода ручной режим управления актуатором .

Спасибо за добрые слова.

ручной режим щас работает только когда температура в теплице ниже минимальной.

да у ардуины есть такой косяк, очень чувствительна к помехам, в идеале питать арду надо от одного БП а нагрузку от другого.

 

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

som1211 пишет:
Здравствуйте ,Сергей! СПАСИБО за ваш труд! Уже месяц ваш код работает в тепличке. Столкнулся с одной проблемой. При каких-то помехах в питании ( у меня стоит обогреватель через термостат,грешу на реле) управление актуатором переходит в ручной режим .Форточки закрыты ,чуть не потерял томаты.Пришлось убирать из кода ручной режим управления актуатором .

технический ворпрос - у Вас ардуина в теплице не виснит?

YRA
Offline
Зарегистрирован: 10.01.2015

Срегей, а схему набрость можно. 

221 /функция считывания клавиатуры НАДО калибровать под контретную сборку резисторов!!!!!!!

как у Вас собрано???

в старую UNO  не влезает код выдает ошибку, а в новую  из поднебесной месяц назад пришла все становится отлично, вот пытаюсь на ней собрать. 

 

Diemon
Offline
Зарегистрирован: 18.11.2011

Вопрос к автору. Если я правильно понимаю, то во время закрытия/открытия форточек ардуина висит в цикле while и ждем пока они не закроются/откроются? То есть на нинкакие другие внешние раздражители она не отвечает в этотм момент?

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

YRA пишет:

Срегей, а схему набрость можно. 

221 /функция считывания клавиатуры НАДО калибровать под контретную сборку резисторов!!!!!!!

как у Вас собрано???

в старую UNO  не влезает код выдает ошибку, а в новую  из поднебесной месяц назад пришла все становится отлично, вот пытаюсь на ней собрать. 

many_buttons_general.JPG5-Button-Keyboard-Diagram.jpg

схема как сдесь только на 5 кнопок, резюки по 1кОм но оптимальней 2 схема, по этому и нужна калибровка

 


#include <AnalogKey5.h>
#define BUTTON A0 // Пин, к которому подключены кнопки (А0)
AnalogKey5 AKeys(809, 750, 670, 509, 10, 10);
boolean Key1_Old;
boolean Key2_Old;
boolean Key3_Old;
boolean Key4_Old;
boolean Key5_Old;
void setup()
{
Serial.begin(9600);
Serial.println ("test");
pinMode (A0, INPUT_PULLUP);
}
 
void loop()
{
  AKeys.Refresh(analogRead(BUTTON));
  if (AKeys.Key1() && !Key1_Old) Serial.println ("Button 1 pressed (Selekt front)");
  Key1_Old = AKeys.Key1();
  if (AKeys.Key2() && !Key2_Old) Serial.println ("Button 2 pressed (Left front)");
  Key2_Old = AKeys.Key2();
  if (AKeys.Key3() && !Key3_Old) Serial.println ("Button 3 pressed (UP front)");
  Key3_Old = AKeys.Key3();
  if (AKeys.Key4() && !Key4_Old) Serial.println ("Button 4 pressed (Down front)");
  Key4_Old = AKeys.Key4();
  if (AKeys.Key5() && !Key5_Old) Serial.println ("Button 5 pressed (Right front)");
  Key5_Old = AKeys.Key5();
Serial.println(analogRead(BUTTON));

это код для колибровки клавиатуры, нажимаем и смотрим в мониторе порта а значения заносим в мой код, т.к. резисторы идут с погрешностью вот и приходится калибровать.

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

Diemon пишет:

Вопрос к автору. Если я правильно понимаю, то во время закрытия/открытия форточек ардуина висит в цикле while и ждем пока они не закроются/откроются? То есть на нинкакие другие внешние раздражители она не отвечает в этотм момент?

так и есть, просто внешних раздражителей в принципе не используется, только блокировка по дождю, а так задержка раз или два в сутки на 10-12 с не существенна ))

там же обращене происходит к откр и закр по температуре и все ))

Mixa0104
Offline
Зарегистрирован: 17.11.2016

Здраствуйте Серей. Хотелбы попросить Вас схемку подключения датчиков к ардуине а то немогу разобратья я новичек в этом. Заранее благодарен. Моя почта mixa0104@gmail.com

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

Все датчики стандартныые имеют схемы подключения, в начале скетча расписано все что к чему подключено )

YRA
Offline
Зарегистрирован: 10.01.2015

Добрый вечер,Сергей! Ты извини, но я отправил твой рисунок со схемой.

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

YRA все нормально, помогай молодым

Alex_kl
Offline
Зарегистрирован: 05.08.2016

Доброго времени суток. Пытаюсь залить в УНО, при компиляции выдает ошибку- fatal error: EEPROM2.h: No such file or directory.

Нет такого файла или дирертории. Подскажите что делать. Я только начинаю знакомиться с ардуинами.

arDubino
Offline
Зарегистрирован: 12.01.2017

библиотека эта ее надо подключить. как подключить и где найти гуглить

YRA
Offline
Зарегистрирован: 10.01.2015
Alex_kl
Offline
Зарегистрирован: 05.08.2016

Всем спасибо. Разобрался с библиотеками. Все залилось.

 

diesel
Offline
Зарегистрирован: 16.02.2016

Сергей такой вопрос устоновил ваш скетчь все зашло в УНО но почему по таймеру включается только первый канал/Второй канал по таймер не отробатывает 3.4.тоже

diesel
Offline
Зарегистрирован: 16.02.2016

поменял пины на палив  заработал 1и2 канал 3и4 не включаются

 

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

diesel пишет:

поменял пины на палив  заработал 1и2 канал 3и4 не включаются

 

 

flagIrrWater какое значение имеет, это проверка на дождь, если не 0 то и каналы работать не будут, у меня они просто для улицы

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

mrGoReC пишет:

diesel пишет:

поменял пины на палив  заработал 1и2 канал 3и4 не включаются

 

 

flagIrrWater какое значение имеет, это проверка на дождь, если не 0 то и каналы работать не будут, у меня они просто для улицы

 

Вы EEPROM в уне обнуляли перед первой прошивкой? вы задаете как таймер полива? там в начале перепутаны коменты по EEPROM старт и стоп время таймера. задавайте время через соответствующее меню и проверяйте включен ли канал на полив.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

на 16 каналов видимо надо мегу готовить?
Приятель просит! А то у нас в верховьях Кубани бывает засуха по месяцу

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

ua6em пишет:

на 16 каналов видимо надо мегу готовить?
Приятель просит! А то у нас в верховьях Кубани бывает засуха по месяцу

я как раз на мегу и перешол, каналов завались и приделываю LCD ))))

diesel
Offline
Зарегистрирован: 16.02.2016

Спасибо Серегей убрал из скетча не востребованые функции и все зароботало 

vlad72
Offline
Зарегистрирован: 20.03.2016

Сергей, респект за проделанный труд и спасибо что поделился с нами!

Не понял для чего делитель для актуатара, хочу себе заказать обычный китайские актуатор, у него встроенные концевики?

 

И ещё вопрос,не могу в меню минимальную температуру настроить, всё пробовал без делителя напряжения, это как то связана?

Я в программирование полный ноль.

Short Circuit
Short Circuit аватар
Offline
Зарегистрирован: 17.05.2015

Tomasina пишет:

вряд ли кнопки вставлены герметично. Думаю, стоит нарыть в коробках из-под обуви пакетик силикагеля и закинуть внутрь. Хуже не будет.

перед этим силикогель высушивают на сковородке, иначе от него толку ноль..

YRA
Offline
Зарегистрирован: 10.01.2015

Можно два карлсона-  приточная  и вытяжная, я думаю, конденсата не будет как класса, если не в напряг, то на постояку,если фильдиперсово- от датчика влажности у Меги ног море, но тут надо просить программера с низким поклоном за туды его праведные.

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

vlad72 пишет:

Сергей, респект за проделанный труд и спасибо что поделился с нами!

Не понял для чего делитель для актуатара, хочу себе заказать обычный китайские актуатор, у него встроенные концевики?

Это нужно для отработки отключение актуатора по перегрузу, когда дверь открыта или закрыта, так проще, можно поставить конечно и просто модуль тока )))

И ещё вопрос,не могу в меню минимальную температуру настроить, всё пробовал без делителя напряжения, это как то связана?

у меня все рабортает, смотри внимательнее код ))

Я в программирование полный ноль.

sir_kimas
Offline
Зарегистрирован: 01.08.2016

Господа, доброе время суток.

Подскажите пожалуйста. Пытаюсь повторить проект но какой-то косяк. Все прошивается без ошибок, но после включения загорается и висит экран с надписью "Автополив v.3.0 ру" и все. В чем может быть косяк? 

Заранее спасибо!

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

Доброго!
у вас не активируется часы, вот и висит все, проверьте библиотеку, как подключен модуль часов. 

или закоментируйте все с часами вначале и увидете в чем дело

sir_kimas
Offline
Зарегистрирован: 01.08.2016

mrGoReC пишет:

Доброго!
у вас не активируется часы, вот и висит все, проверьте библиотеку, как подключен модуль часов. 

или закоментируйте все с часами вначале и увидете в чем дело

Спасибо! Была проблема с библиотекой. Теперь все в норме.

Подскажите еще пожалуйста. Хочу убрать  актюнюатор и влажность почвы. пытаюсь убирать но не как! Подскажите что и как?

 

Dimoooon
Offline
Зарегистрирован: 09.03.2018

Извините, у меня такая ошибка.В чём проблема и как её устранить?

Arduino: 1.8.5 (Windows 10), Плата:"Arduino/Genuino Uno"
 
C:\Users\0DDD~1\AppData\Local\Temp\arduino_modified_sketch_550456\sketch_mar09a.ino:191:300: fatal error: DS3231.h: No such file or directory
 
 
                                                                                                                                                                                                                                                                                                            ^
 
compilation terminated.
 
exit status 1
Ошибка компиляции для платы Arduino/Genuino Uno.
 
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
 
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Dimoooon пишет:

Извините, у меня такая ошибка.В чём проблема и как её устранить?

Arduino: 1.8.5 (Windows 10), Плата:"Arduino/Genuino Uno"
 
C:\Users\0DDD~1\AppData\Local\Temp\arduino_modified_sketch_550456\sketch_mar09a.ino:191:300: fatal error: DS3231.h: No such file or directory
 
 
                                                                                                                                                                                                                                                                                                            ^
 
compilation terminated.
 
exit status 1
Ошибка компиляции для платы Arduino/Genuino Uno.
 
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
 

библиотеку  надо положить в папку со скетчем

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

sir_kimas пишет:

mrGoReC пишет:

Доброго!
у вас не активируется часы, вот и висит все, проверьте библиотеку, как подключен модуль часов. 

или закоментируйте все с часами вначале и увидете в чем дело

Спасибо! Была проблема с библиотекой. Теперь все в норме.

Подскажите еще пожалуйста. Хочу убрать  актюнюатор и влажность почвы. пытаюсь убирать но не как! Подскажите что и как?

 

просто в лупе закоментите подпрограммы, которые отвечают за эти функции

 

Dimoooon
Offline
Зарегистрирован: 09.03.2018

Здравствуйте, в скетче ошибка, что делать?

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

а вы предварительно записали в EEPROM по всем адресам 0? если нет то простенькой проглй это необходимо сделать!!!

#include <EEPROM2.h>

void setup() {
  // put your setup code here, to run once:
 Serial.begin(9600);
  Serial.println("EEPROM Clear");

}

void loop() {
  // put your main code here, to run repeatedly:
int i;
for (i=0; i<10024; i++)
{
EEPROM_write_byte(i,0);
Serial.println(i);
delay(5);
}
}

 

 
Dimoooon
Offline
Зарегистрирован: 09.03.2018

Что надо сделать? Я просто взял скетч который вы выставили

YRA
Offline
Зарегистрирован: 10.01.2015

Dimoooon, копируете тот скетч, что вам написал автор  и заливаете его в Ардруину, тем самым обнуляете EEPROM, а потом перегрузив  Ардруинку заливаете туда скетч с программой.

Dimoooon
Offline
Зарегистрирован: 09.03.2018

Спасибо большое, пойду проверять

Dimoooon
Offline
Зарегистрирован: 09.03.2018

Она не загружается, ошибку выдаёт

Arduino: 1.8.5 (Windows 10), Плата:"Arduino/Genuino Uno"
 
C:\Users\0DDD~1\AppData\Local\Temp\arduino_modified_sketch_725013\sketch_mar11a.ino: In function 'void loop()':
 
sketch_mar11a:20: error: 'EEPROM_write_byte' was not declared in this scope
 
 EEPROM_write_byte(i,0);
 
                      ^
 
exit status 1
'EEPROM_write_byte' was not declared in this scope
 
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
 
mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

а у вас хоть библиотека EEPROM есть? EEPROM2.h???

в чем проблема скомпилировать простой скетч?

YRA
Offline
Зарегистрирован: 10.01.2015
Можно этот  
 
 
/*
Очистка EEPROM 
 
Выставляет все байты EEPROM на «0».
 
Этот код не защищен авторским правом.
 
*/
 
#include <EEPROM.h>
 
void setup()
{
  // Прочесываем все 512 байтов EEPROM, выставляя их на «0»:
  for (int i = 0; i < 512; i++)
    EEPROM.write(i, 0);
 
  // Когда все сделано, включаем светодиод:
  digitalWrite(13, HIGH);
}
 
void loop()
{
}
 
 
или 
этот
 
 
/*
 * EEPROM Write
 *
 * Сохраняет в энергонезависимой памяти EEPROM значения,
 * считанные с аналогового входа analog input 0.
 * Данные значения останутся в памяти и после отключения питания 
 * от платы и в будущем могут быть доступны для 
 * другого скетча.
*/
 
#include <EEPROM.h>
 
// текущее значение адреса EEPROM
int addr = 0;
 
void setup()
{
}
 
void loop()
{
  // деление на 4 необходимо, чтобы перевести значение от
  // 0-1023 к одному байту, т.к. EEPROM может хранить только 
  // значения от 0 до 255.
  int val = analogRead(0) / 4;
  
  // записываем значение в энергонезависимую память
  EEPROM.write(addr, val);
  
  // устанавливаем следующую ячейку памяти. 
  // т.к. EEPROM содержит всего 512 ячеек – при достижении 
  // конца памяти – возвращаемся на начало :)
  addr = addr + 1;
  if (addr == 512)
    addr = 0;
  
  delay(100);
}

 

PEKlo
Offline
Зарегистрирован: 20.03.2018

Господа, доброго времени суток!

mrGoReC пишет:

ua6em пишет:

на 16 каналов видимо надо мегу готовить?
Приятель просит! А то у нас в верховьях Кубани бывает засуха по месяцу

я как раз на мегу и перешол, каналов завались и приделываю LCD ))))

Уважаемый mrGoReC, хотелось бы узнать, по поводу этого Вашего проекта. Продолжение будет? В этой ветке, или в новой? Покупать одну Мегу, или 3 Уно, вот в чём вопрос!

sir_kimas
Offline
Зарегистрирован: 01.08.2016

Доброво времени суток! Подскажите пожалуйста. После отключения питания в режиме полива например с 14:00 до 14:10 и включение питания после 14:10 реле остается включеным и продолжается полив до следующего дня. Что можно сделать? Как исправить?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Условия проверить

sir_kimas
Offline
Зарегистрирован: 01.08.2016

Можно по подробней. Я не очень силен в программировании. Только учусь!

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Да там куча условий. С начальным уровнем только запутаешься. В чужом коде тяжело разбираться

sir_kimas
Offline
Зарегистрирован: 01.08.2016

jeka_tm пишет:

Да там куча условий. С начальным уровнем только запутаешься. В чужом коде тяжело разбираться

Это понятно что тяжело. Но разобраться нужно. Просто сутки поливать грядку это слишком много.

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

Доброго дня.

продолжение начал, на меге, щас просто некогда, свободного времени няма, на меге лучше делать, можно и на уне, но портов мало, тогда ставить расширитель портов.

mrGoReC
Онлайн
Зарегистрирован: 16.06.2015

по поводу отключения питания при поливе, надо исправлять, по тому и переделываю полностью проект, у меня электричество не отелючается, и потому не было никаких проблем.

sir_kimas
Offline
Зарегистрирован: 01.08.2016

mrGoReC пишет:

по поводу отключения питания при поливе, надо исправлять, по тому и переделываю полностью проект, у меня электричество не отелючается, и потому не было никаких проблем.

У меня тоже вроде проблем нет. Столкнулся случайно. Провод отвалился и только тогда заметил.

А раз произошло такое то опасно. Грядку за сутки зальет до болота.