Ви не увійшли.
Сторінки 1
Эх моя темка уже и тут мелькнула.
Пишите кому данные нужны
Не помню какая версия но кинуто как подтверждение тому что я есть я...
// Запуск скетча
#include <DS3231.h>
#include <DHT.h>
DS3231 rtc(SDA, SCL);
Time RTC_T;
// Загрузка начальных настроек
// Основные настройки скрипта. Изменения необходимо произвести под свои нужды!!!
// Скрипт расчитан на день но для тех кому необходимо сберечь деньги советую перенастроить на ночной режим и счётчик будет считать по другому тарифу.
long led_on = 03; // Время включения диодов (устанавливается в часах)
long led_off = 23; // Время выключения диодов (устанавливается в часах)
long ventilation_on = 32; // Включение вентиляции (устанавливается в градусах цельсия).
long breeze_on = 01; // Обдув растишек on (устанавливается в часах).
long breeze_off = 23; // Обдув растишек off (устанавливается в часах).
long compressor_on = 5; // Запуск компрессора для нагнетания воздуха в раствор.
long compressor_off = 23; // Остановка компрессора для нагнетания воздуха в раствор.
long sprayings_on = 23; // Запускается после выключения света, указываются минуты начала опрыскивания.
long sprayings_off = 24; // Минуты остановки опрыскивания.
long a_heating_on = 25; // Температура включения обогрева воздуха (градусы цельсия)
long a_cooling_on = 25; // Температура включения охлаждения воздуха (градусы цельсия)
long w_heating_on = 25; // Температура включения обогрева воды (градусы цельсия)
long w_cooling_on = 25; // Температура включения охлаждения воды (градусы цельсия)
long humidifier_on = 50; // Минимальная влажность для включения увлажнителя воздуха.
// Инициализация железа
// Пины для подключения к Ардуино датчиков и исполняемых модулей.
// Исполняемые модули
int led = 2; // Диоды
int ventilation = 3; // Вентиляция
int compressor = 4; // Компрессор
int breeze = 5; // Эмитация ветра
int sprayings = 6; // опрыскивание
int humidifier = 7; // Увлажнение воздуха
int a_heating = 8; // обогрев воздуха
int a_cooling = 9; // охлождение воздуха
int w_heating = 9; // обогрев воды (раствора)
int w_cooling = 9; // охлождение воды (раствора)
//Датчики
int W_Temp = 10; // Температура воды
#define DHTPIN 11 // Температура и влажность воздуха
#define solution 12 // Датчик уровня раствора
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22
//#define DHTTYPE DHT21 // DHT 21
DHT dht(DHTPIN, DHTTYPE);
// Устанавливаем системные переменные для начала работы.
void setup()
{
rtc.begin();
dht.begin();
Serial.begin(115200);
pinMode(led, OUTPUT); // Диоды
pinMode(ventilation, OUTPUT); // Вентиляция
pinMode(breeze, OUTPUT); // Эмитация ветра
pinMode(compressor, OUTPUT); // Компрессор
pinMode(a_heating, OUTPUT); // обогрев воздуха
pinMode(a_cooling, OUTPUT); // охлождение вохдуха
pinMode(w_heating, OUTPUT); // обогрев воды
pinMode(w_cooling, OUTPUT); // охлождение воды
}
void loop()
{
RTC_T = rtc.getTime();
Serial.println(rtc.getTimeStr());
float a_humidity = dht.readHumidity();
float a_temp = dht.readTemperature();
delay (2000);
if (isnan(a_temp) || isnan(a_humidity)) {
Serial.println("Failed to read from DHT");
} else {
Serial.print("Humidity: ");
Serial.print(a_humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(a_temp);
Serial.println(" *C");
}
double val_W = analogRead(W_Temp);
double voltage = val_W*5.0/1024;
double w_temp = voltage*100 - 273.15;
float max_a_temp = 0, min_a_temp = 90; // max/min значения температуры воды
float max_w_temp = 0, min_w_temp = 90; // max/min значения температуры раствора
float max_a_humidity = 0, min_a_humidity = 90; // max/min значения температуры раствора
// Проверка мин и макс температуры воздуха
if(a_temp > max_a_temp) {
max_a_temp = a_temp;
} // max температура воздуха
if(a_temp < min_a_temp) {
min_a_temp = a_temp;
} // min температура воздуха
// Проверка мин и макс температуры раствора (воды)
if(w_temp > max_w_temp) {
max_w_temp = w_temp;
} // max температура воды
if(w_temp < min_w_temp) {
min_w_temp = w_temp;
} // min температура воды
// Проверка влажности
if(a_humidity > max_a_humidity) {
max_a_humidity = a_humidity;
} // max влажность
if(a_humidity < min_a_humidity) {
min_a_humidity = a_humidity;
} // min влажность
// LED
if ((RTC_T.hour) >= led_on && (RTC_T.hour) < led_off)
{
digitalWrite(led, HIGH);
}
else
{
digitalWrite(led, LOW);
}
// Проветривание
/*
if ((RTC_T.hour) > ventilation_on && (RTC_T.hour) < ventilation_off)
{
// Включить
digitalWrite(ventilation, HIGH);
}
else
{
// Выключить
digitalWrite(ventilation, LOW);
}
*/
// ventilation TEMP (TEST)
if (a_temp > ventilation_on)
{
// Включить
digitalWrite(ventilation, HIGH);
}
else
{
// Выключить
digitalWrite(ventilation, LOW);
}
// Обдув (эмитация ветра)
if ((RTC_T.hour) >= breeze_on && (RTC_T.hour) < breeze_off)
{
// Включить
digitalWrite(breeze, HIGH);
}
else
{
// Выключить
digitalWrite(breeze, LOW);
}
//Обогрев
if (a_temp < a_heating_on)
{
// Включить обогрев воздуха
digitalWrite(a_heating, HIGH);
}
else
{
// Выключить обогрев воздуха
digitalWrite(a_heating, LOW);
}
if (w_temp < w_heating_on)
{
// Включить обогрев воды
digitalWrite(a_heating, HIGH);
}
else
{
// Выключить обогрев воды
digitalWrite(a_heating, LOW);
}
// Охлаждение
if (a_temp > a_cooling_on)
{
// Включить охлождение воздуха
digitalWrite(a_cooling, HIGH);
}
else
{
// Выключить охлождение воздуха
digitalWrite(a_cooling, LOW);
}
if (w_temp > w_cooling_on)
{
// Включить охлождение воды
digitalWrite(w_cooling, HIGH);
}
else
{
// Выключить охлождение воды
digitalWrite(w_cooling, LOW);
}
// Компрессор
if ((RTC_T.hour) >= compressor_on && (RTC_T.hour) < compressor_off)
{
// Включить
digitalWrite(compressor, HIGH);
}
else
{
// Выключить
digitalWrite(compressor, LOW);
}
// Опрыскивание
if ((RTC_T.hour) == led_off && (RTC_T.min) >= sprayings_on && (RTC_T.hour) == led_off && (RTC_T.min) <= sprayings_off)
{
// Включить
digitalWrite(sprayings, HIGH);
}
else
{
// Выключить
digitalWrite(sprayings, LOW);
}
// Увлажнение воздуха
if (a_humidity < humidifier_on)
{
// Включить
digitalWrite(humidifier, HIGH);
}
else
{
// Выключить
digitalWrite(humidifier, LOW);
}
// Датчик уровня раствора
if (!digitalRead(solution))
{
// Что делать пропишете сами)
// Низкий уровень раствора
}
else
{
// Раствор в норме доливать не надо.
}
}
Сторінки 1