PHP код:
#include <LiquidCrystal_I2C.h> Подключаем библиотеку монитора
#include <Wire.h> //Подключаем библиотеку для использования I2C интерфейса с модулем RTC
#include <RTClib.h> //Подключаем библиотеку для использования модуля часов реального времени RTC
RTC_DS1307 RTC; //Создаем переменную класса - для использования RTC
#define mn 60UL
#define hr 3600UL
//----------Объявляем разные переменные------------
const int RelCO2 = 3; //Используем цифровой ПОРТ 3 -> на реле 6/220
const int LedPWM = 9; //ШИМ утро-вечер на выходе 9 -> к драйверам
//Установки параметров ШИМ
#define PWM_MIN 0 //минимальное значение ШИМ
#define PWM_MAX 255//максимальное значение ШИМ
#define PWM_LOW 180//сниженное значение ШИМ
const long OnRelLed1 = 13*hr; //Время срабатывания реле
const long OffRelLed1 = 22*hr; //Время выключения реле
const long LedPWMDur = 60*mn;//длительность восхода-заката при помощи ШИМ
void setup(){
pinMode (RelLed1,OUTPUT); //Инициализируем порт канала как ВЫХОД
digitalWrite(RelLed1,HIGH); //Устанавливаем на входах релейного модуля ВЫСОКИЙ уровень
pinMode(LedPWM, OUTPUT); //Инициализируем порт канала как ВЫХОД
[I]//digitalWrite(LedPWM, LOW);// Устанавливаем PWM в низкий кровень
analogWrite(LedPWM, PWM_MIN)[/I];//Устанавливаем PWM в минимальный уровень, какой-то из них должен работать :)
Wire.begin(); //Инициируем I2C интерфейс
RTC.begin(); //Инициирум RTC модуль
//RTC.adjust(DateTime(__DATE__, __TIME__)); //С этой строки необходимо убрать комментарии один раз в начале установки часов,
} // КОНЕЦ ИНИЦИАЛИЗАЦИИ
//--------------------------------------------------
void loop() //
{
DateTime myTime = RTC.now();
//----------Раздел обработки реле по времени ----
long utime = myTime.unixtime(); //сохраняем в переменную - время в формате UNIX
utime %= 86400; //Сохраняем в этой же переменной остаток деления на кол-во секунд в сутках, Это дает количество секунд с начала текущих суток
//------------Реле 2----------
if ((utime >= OnRelLed1) && (utime <= (OffRelLed1))) //Если секунд с начала суток больше, чем задано для включения, и одновременно меньше, чем задано для включения
{ digitalWrite(RelLed1,LOW); //Устанавливаем на входе релейного модуля НИЗКИЙ уровень - реле включается
} else{digitalWrite(RelLed1,HIGH);}
//-----------Диммируем 9 КАНАЛ ардуино--------
if ((utime > (OnRelLed1+LedPWMDur)) && (utime < OffRelLed1-LedPWMDur))//время включеного ШИМ
{
digitalWrite(LedPWM, PWM_MAX);
}
else
{
if((utime >= OnRelLed1) && (utime < (OnRelLed1 + LedPWMDur)))
{
digitalWrite(LedPWM, (utime - OnRelLed1)*(PWM_MAX-PWM_MIN) / LedPWMDur);
}
else
{
if((utime >= OffRelLed1 - LedPWMDur) && (utime < OffRelLed1))
{
digitalWrite(LedPWM, (OffRelLed1 - utime)*(PWM_MAX-PWM_MIN) / LedPWMDur);
}
else
{
digitalWrite(LedPWM, PWM_MIN);//значение PWM_MIN
}
}
}
}
//------------Конец ЦИКЛА-------