делаю на меге, подцепил LCD 3.95, цифровые а не аналоговыек кнопки, управление поливом всего сада, а не только теплицы, хочу мониторить на SD или на сервер и далее в сторону наворотов ))
делаю на меге, подцепил LCD 3.95, цифровые а не аналоговыек кнопки, управление поливом всего сада, а не только теплицы, хочу мониторить на SD или на сервер и далее в сторону наворотов ))
Я ваш скеч переделал немного под себя. У меня 4 теплицы. Сделал полив по расписанию, убрал влажность почвы и дождя. Управление форточками. Установил светодиоды. Светодиод не горит - канал отключен. Горит желтый - Ожидание полива. Горит зеленый - полив.
/*
Полив: - по таймеру недельному
Проветривание: - по датчику температурцы в теплице
- вручную с кнопки
Адреса в 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 KEYBOARD A0 //пин кнопак
#define irrigator_relay 9 //пин включения полива (1)
#define irrigator_relay2 10 //пин включения полива (2)
#define irrigator_relay3 11 //пин включения полива (3)
#define irrigator_relay4 12 //пин включения полива (4)
#define led_yellow1 30 //пин включения LED желтый канал (1)
#define led_green1 31 //пин включения LED зеленый канал (1)
#define led_yellow2 32 //пин включения LED желтый канал (2)
#define led_green2 33 //пин включения LED зеленый канал (2)
#define led_yellow3 34 //пин включения LED желтый канал (3)
#define led_green3 35 //пин включения LED зеленый канал (3)
#define led_yellow4 36 //пин включения LED желтый канал (4)
#define led_green4 37 //пин включения LED зеленый канал (4)
#include <EEPROM2.h>
//Создаем переменные для работы с термометром
byte TIn = 0; //переменная температуры воздуха
//Создаем переменные для работы с Гигрометром
int HumIn = 0; //переменная влажности воздуха
//Объявим переменную для хранения состояния реле
boolean relayStatusIrr1 = EEPROM_read_byte(53); //реле полива
boolean relayStatusIrr2 = EEPROM_read_byte(54); //реле полива
boolean relayStatusIrr3 = EEPROM_read_byte(55); //реле полива
boolean relayStatusIrr4 = EEPROM_read_byte(56); //реле полива
// подключение датчиков DHT11
#include <DHT.h>
#define DHTIN 8 //определяем пин
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTIN, DHTTYPE);
//LCD 20x4 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(0x3F, 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(70); //задержка для устранения дребезга
if (buttonValue < 100) {
return BUTTON_RIGHT;
}
else if (buttonValue < 250) {
return BUTTON_DOWN;
}
else if (buttonValue < 470) {
return BUTTON_UP;
}
else if (buttonValue < 600) {
return BUTTON_LEFT;
}
else if (buttonValue < 800) {
return BUTTON_SELECT;
}
return BUTTON_NONE;
}
byte Tday = 0; //день недели
byte regim = 0; //для меню
byte posic = 0;
byte flagIrrManual = 0; //флаг зона 1
byte flagIrrManual2 = 0; //флаг зона 2
byte flagIrrManual3 = 0; //флаг зона 3
byte flagIrrManual4 = 0; //флаг зона 4
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"
DS3231 rtc(SDA, SCL);
Time t;
void setup()
{
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.setCursor(2, 0);
lcd.print("ABTO\4O\5\7B v.2.0");
Wire.begin();
rtc.begin();
delay(3000);
lcd.clear();
dht.begin();
//Настроим пин для управления реле
pinMode(irrigator_relay, OUTPUT);
digitalWrite(irrigator_relay, HIGH);
pinMode(irrigator_relay2, OUTPUT);
digitalWrite(irrigator_relay2, HIGH);
pinMode(irrigator_relay3, OUTPUT);
digitalWrite(irrigator_relay3, HIGH);
pinMode(irrigator_relay4, OUTPUT);
digitalWrite(irrigator_relay4, HIGH);
//Настроим пин для LED
pinMode(led_yellow1, OUTPUT);
digitalWrite(led_yellow1, HIGH);
pinMode(led_green1, OUTPUT);
digitalWrite(led_green1, HIGH);
pinMode(led_yellow2, OUTPUT);
digitalWrite(led_yellow2, HIGH);
pinMode(led_green2, OUTPUT);
digitalWrite(led_green2, HIGH);
pinMode(led_yellow3, OUTPUT);
digitalWrite(led_yellow3, HIGH);
pinMode(led_green3, OUTPUT);
digitalWrite(led_green3, HIGH);
pinMode(led_yellow4, OUTPUT);
digitalWrite(led_yellow4, HIGH);
pinMode(led_green4, OUTPUT);
digitalWrite(led_green4, HIGH);
//Настроим пин для кнопок
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 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 && relayStatusIrr1 == HIGH) {
digitalWrite(led_green1, LOW);
digitalWrite(led_yellow1, LOW);
lcd.setCursor(5, 3);
lcd.print("x");
}
if (relayStatusIrr1 == LOW) {
digitalWrite(led_yellow1, LOW);
digitalWrite(led_green1, HIGH);
lcd.setCursor(5, 3);
lcd.print("P");
}
if (Timer == 1 && relayStatusIrr1 == HIGH) {
digitalWrite(led_yellow1, HIGH);
digitalWrite(led_green1, LOW);
lcd.setCursor(5, 3);
lcd.print("T");
}
if (EEPROM_read_byte(53) == 1) {
digitalWrite(irrigator_relay, LOW);
relayStatusIrr1 = LOW;
flagIrrManual = 0;
}
if (EEPROM_read_byte(53) == 0) {
digitalWrite(irrigator_relay, HIGH);
digitalWrite(led_green1, LOW);
relayStatusIrr1 = HIGH;
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, LOW);
EEPROM_write_byte(53, 1);
}
else if (t.hour == TstopHour && t.min == TstopMinute) {
digitalWrite(irrigator_relay, HIGH);
EEPROM_write_byte(53, 0);
}
}
}
}
if (Timer == 0)
{
digitalWrite(irrigator_relay, HIGH);
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 == HIGH) {
digitalWrite(led_green2, LOW);
digitalWrite(led_yellow2, LOW);
lcd.setCursor(9, 3);
lcd.print("x");
}
if (relayStatusIrr2 == LOW) {
digitalWrite(led_yellow2, LOW);
digitalWrite(led_green2, HIGH);
lcd.setCursor(9, 3);
lcd.print("P");
}
if (Timer2 == 1 && relayStatusIrr2 == HIGH) {
digitalWrite(led_yellow2, HIGH);
digitalWrite(led_green2, LOW);
lcd.setCursor(9, 3);
lcd.print("T");
}
if (EEPROM_read_byte(54) == 1) {
digitalWrite(irrigator_relay2, LOW);
relayStatusIrr2 = LOW;
flagIrrManual2 = 0;
}
if (EEPROM_read_byte(54) == 0) {
digitalWrite(irrigator_relay2, HIGH);
relayStatusIrr2 = HIGH;
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, LOW);
EEPROM_write_byte(54, 1);
}
else if (t.hour == TstopHour2 && t.min == TstopMinute2) {
digitalWrite(irrigator_relay2, HIGH);
EEPROM_write_byte(54, 0);
}
}
}
}
if (Timer2 == 0)
{
digitalWrite(irrigator_relay2, HIGH);
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 && relayStatusIrr3 == HIGH) {
digitalWrite(led_green3, LOW);
digitalWrite(led_yellow3, LOW);
lcd.setCursor(13, 3);
lcd.print("x");
}
if (relayStatusIrr3 == LOW) {
digitalWrite(led_yellow3, LOW);
digitalWrite(led_green3, HIGH);
lcd.setCursor(13, 3);
lcd.print("P");
}
if (Timer3 == 1 && relayStatusIrr3 == HIGH) {
digitalWrite(led_yellow3, HIGH);
digitalWrite(led_green3, LOW);
lcd.setCursor(13, 3);
lcd.print("T");
}
if (EEPROM_read_byte(55) == 1) {
digitalWrite(irrigator_relay3, LOW);
relayStatusIrr3 = LOW;
flagIrrManual3 = 0;
}
if (EEPROM_read_byte(55) == 0) {
digitalWrite(irrigator_relay3, HIGH);
relayStatusIrr3 = HIGH;
flagIrrManual3 = 1;
}
if (Timer3 == 1)
{
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, LOW);
EEPROM_write_byte(55, 1);
}
else if (t.hour == TstopHour3 && t.min == TstopMinute3) {
digitalWrite(irrigator_relay3, HIGH);
EEPROM_write_byte(55, 0);
}
}
}
}
if (Timer3 == 0)
{
digitalWrite(irrigator_relay3, HIGH);
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 && relayStatusIrr4 == HIGH) {
digitalWrite(led_green4, LOW);
digitalWrite(led_yellow4, LOW);
lcd.setCursor(17, 3);
lcd.print("x");
}
if (relayStatusIrr4 == LOW) {
digitalWrite(led_yellow4, LOW);
digitalWrite(led_green4, HIGH);
lcd.setCursor(17, 3);
lcd.print("P");
}
if (Timer4 == 1 && relayStatusIrr4 == HIGH) {
digitalWrite(led_yellow4, HIGH);
digitalWrite(led_green4, LOW);
lcd.setCursor(17, 3);
lcd.print("T");
}
if (EEPROM_read_byte(56) == 1) {
digitalWrite(irrigator_relay4, LOW);
relayStatusIrr4 = LOW;
flagIrrManual4 = 0;
}
if (EEPROM_read_byte(56) == 0) {
digitalWrite(irrigator_relay4, HIGH);
relayStatusIrr4 = HIGH;
flagIrrManual4 = 1;
}
if (Timer4 == 1)
{
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, LOW);
EEPROM_write_byte(56, 1);
}
else if (t.hour == TstopHour4 && t.min == TstopMinute4) {
digitalWrite(irrigator_relay4, HIGH);
EEPROM_write_byte(56, 0);
}
}
}
}
if (Timer4 == 0)
{
digitalWrite(irrigator_relay4, HIGH);
EEPROM_write_byte(56, 0);
}
}
void StaticButton()
{
Button_read();
if (button == 1 && flag == 1) {
MenuSET();
}
if (button == 5 && flag == 1) {
TimerViewer();
}
}
//=========Вывод состояние таймеров (информативное окно)=================================
void TimerViewer ()
{
// lcd.setCursor(0, 3); //чистим нижнюю строчку икрана, от левой инфы
// lcd.print(" ");
byte myArray[7] = {1, 4, 7, 10, 13, 16, 19}; // для выделения дней в которых уст. таймер
byte i;
do
{
Button_read();
delay(150);
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");
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(" ");
}
}
}
{
lcd.setCursor(0, 3);
lcd.print(" ");
}
{
lcd.setCursor(2, 3);
lcd.print(" ");
}
{
lcd.setCursor(5, 3);
lcd.print(" ");
}
{
lcd.setCursor(8, 3);
lcd.print(" ");
}
{
lcd.setCursor(11, 3);
lcd.print(" ");
}
{
lcd.setCursor(14, 3);
lcd.print(" ");
}
{
lcd.setCursor(17, 3);
lcd.print(" ");
}
if (regim == 2) //
{
lcd.setCursor(0, 0);
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");
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) lcd.print("B\2K\5 ");
if (Timer3) lcd.print("BK\5 ");
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");
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) {
lcd.print("B\2K\5 ");
}
if (Timer4 == 1) {
lcd.print("BK\5 ");
}
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");
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()
{
// lcd.clear();
// lcd.setCursor(0, 3); //чистим нижнюю строчку экрана, от левой инфы
// lcd.print(" ");
do
{
Button_read();
delay(150);
if (button == 1 && flag == 1) {
regim++;
flag = 0;
}
if (regim == 1) // режим Установка Времени Таймера 1 полива
{
Timer = EEPROM_read_byte(4);
lcd.setCursor(0, 0);
lcd.print("[1]\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);
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("\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(" ");
}
}
{
lcd.setCursor(1, 3);
lcd.print(" ");
}
{
lcd.setCursor(3, 3);
lcd.print(" ");
}
{
lcd.setCursor(5, 3);
lcd.print(" ");
}
{
lcd.setCursor(7, 3);
lcd.print(" ");
}
{
lcd.setCursor(9, 3);
lcd.print(" ");
}
{
lcd.setCursor(11, 3);
lcd.print(" ");
}
{
lcd.setCursor(13, 3);
lcd.print(" ");
}
{
lcd.setCursor(16, 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 == 2) // режим Установка Времени Таймера 2 полива
{
Timer2 = EEPROM_read_byte(9);
lcd.setCursor(0, 0);
lcd.print("[2]\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);
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("\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 == 3) // режим Установка Времени Таймера 3 полива
{
Timer3 = EEPROM_read_byte(14);
lcd.setCursor(0, 0);
lcd.print("[3]\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);
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("\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 == 4) // режим Установка Времени Таймера 4 полива
{
Timer4 = EEPROM_read_byte(19);
lcd.setCursor(0, 0);
lcd.print("[4]\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 == 5) //Режим установки часов
{
lcd.setCursor(0, 0);
lcd.print("[5]\6CT \3ACOB ");
lcd.setCursor(0, 1);
if (t.date < 10) {
lcd.print("0");
}
lcd.print(t.date);
lcd.print("/");
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();
}
}
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();
}
}
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();
}
}
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();
}
}
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();
}
}
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();
}
}
if (posic == 6) posic = 0;
}
}
while (regim < 6); //////////////////////
lcd.clear();
lcd.noBlink();
regim = 0;
posic = 0;
}
void TimePrint()
{
lcd.setCursor(0, 0);
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(" ");
if (t.date < 10) lcd.print('0');
lcd.print(t.date, DEC);
lcd.print(".");
if (t.mon < 10) lcd.print('0');
lcd.print(t.mon, DEC);
lcd.print(".");
lcd.print(t.year, DEC);
}
//=========== Обработки печати и вывода на дисплейчик (Влажности воздуха, температуры воздуха)
void printDin()
{
lcd.setCursor(7, 1);
lcd.print("H%=");
if (HumIn < 10) lcd.print('0');
lcd.print(int(HumIn));
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" t");
lcd.print((char)223);
lcd.print("=");
if (TIn < 10) lcd.print('0');
lcd.print(int(TIn));
lcd.print(" ");
}
//=========== Обработки печати и вывода на дисплейчик СТАТИКИ
void printStat ()
{
lcd.setCursor(13, 1);
lcd.print("T.\4O\5>>");
lcd.setCursor(0, 2);
lcd.print("\4O\5 1 2 3 4 ");
lcd.setCursor(0, 3);
lcd.print(" [");
lcd.setCursor(6, 3);
lcd.print("] ");
lcd.setCursor(8, 3);
lcd.print("[");
lcd.setCursor(10, 3);
lcd.print("] ");
lcd.setCursor(12, 3);
lcd.print("[");
lcd.setCursor(14, 3);
lcd.print("] ");
lcd.setCursor(16, 3);
lcd.print("[");
lcd.setCursor(18, 3);
lcd.print("] ");
}
void loop()
{
timeDS3231();
TInGet();
HumInGet();
Irrigation();
StaticButton();
TimePrint();
printDin();
printStat();
}
по тому и переделываю полностью проект
Если не секрет, что и почему переделываете?
делаю на меге, подцепил LCD 3.95, цифровые а не аналоговыек кнопки, управление поливом всего сада, а не только теплицы, хочу мониторить на SD или на сервер и далее в сторону наворотов ))
делаю на меге, подцепил LCD 3.95, цифровые а не аналоговыек кнопки, управление поливом всего сада, а не только теплицы, хочу мониторить на SD или на сервер и далее в сторону наворотов ))
Я ваш скеч переделал немного под себя. У меня 4 теплицы. Сделал полив по расписанию, убрал влажность почвы и дождя. Управление форточками. Установил светодиоды. Светодиод не горит - канал отключен. Горит желтый - Ожидание полива. Горит зеленый - полив.
Добрый день.При компиляции выдает такую ошибку.