#1 Re: Програмування Arduino » Помогите со скетчем » 2019-03-22 22:12:10

Эх моя темка уже и тут мелькнула.
Пишите кому данные нужны smile

Не помню какая версия но кинуто как подтверждение тому что я есть я...

// Запуск скетча
#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
  {
    // Раствор в норме доливать не надо.
  }   
}

Підвал форуму