Показать сообщение отдельно
Старый 06.07.2015, 18:51   #2 (permalink)
Zebraj
Member
 
Регистрация: 20.04.2015
Сообщений: 23
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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(LedPWMOUTPUT); //Инициализируем порт канала как ВЫХОД 
[I]//digitalWrite(LedPWM, LOW);// Устанавливаем PWM в низкий кровень
analogWrite(LedPWMPWM_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(LedPWMPWM_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(LedPWMPWM_MIN);//значение PWM_MIN 
      
}
     }
  }
}
//------------Конец ЦИКЛА------- 

Последний раз редактировалось Zebraj; 06.07.2015 в 18:59
Zebraj вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070