Не отступай и не сдавайся !!!
Ардуино: Обучение. Моделирование. Изготовление под заказ.

Хлебные крошки
программные коды

void write(int address, byte value) // Прототип функции // Записывает байт value по адресу address в EEPROM. // Запись выполняется за 3,3 мс. // Гарантируется 100 000 циклов записи. #include <EEPROM.h> EEPROM.write(15, 0);  //- запись 0 по адресу 15

...


rely.ino
Программа автополива

// Программа автополива // Определяем флаг условной компиляции #define DebugSerial 1 #include <iarduino_RTC.h> #include <DHT.h> iarduino_RTC time(RTC_DS3231); // Переменные int VlajnGr = 650; // Граничная влажность //const int8_t DRY = 700; // константа Сухой //const int8_t WET = 300; // константа Мокрый float SrIzm = 0; int MassIzm [10]; int RMassIzm = sizeof(MassIzm)/2; // Определение имён #define RELY_SHINE 4 // Сигнал с реле света #define RELY_WATERING 5 // Сигнал с реле полива #define dhtPin 8 // #define PowerSensorPin 7 // Объявляем Пин питания датчика. Пин питания датчика влажности. #define SensorPin A7 // Объявляем Пин сенсора датчика. Аналоговый вход. #define Pausa5sek 5000 // 5000 милисекунд. DHT dht(dhtPin, DHT11); // Прототипы функций void relyShine(int Hrs); void read_h_t(); int readSensor(); void relyWatering(int Vlajn); void starter(); float InputSensor(); // Мои функции #include "starter.h" #include "relyShine.h" #include "read_h_t.h" #include "readSensor.h" #include "relyWatering.h" #include "InputSensor.h" void setup() { // Инциализация pinMode(RELY_WATERING, OUTPUT); digitalWrite(RELY_WATERING, LOW); pinMode(RELY_SHINE, OUTPUT); digitalWrite(RELY_SHINE, LOW); pinMode(SensorPin, INPUT); // Аналоговый вход pinMode(PowerSensorPin, OUTPUT); // Пин питания датчика влажности digitalWrite(PowerSensorPin, LOW); // Питающий ПИН на ВЫКЛ цифровой // Serial.begin(115200); Serial.begin(9600); time.begin(); dht.begin(); //time.settime(0, 37, 20); // сек, мин, час, день, месяц, год, день недели // read_h_t(); // relyShine(time.Hours); //Lp: // InputSensor(); // delay(2000); // goto Lp; // relyShine(); // Вызов функции вкл выкл света // relyWatering (); // Вызов функции вкл полива // read_h_t(); } void loop() { starter(); delay(1000); }

InputSensor.h

// Подпрограмма усреднения считанной влажности // Релиз от 11 февраля 2021 года float InputSensor() { #if (DebugSerial == 1) Serial.print(" "); Serial.println(RMassIzm); #endif for (int i = 0; i < RMassIzm-1; i++) // Сдвигаем влево. { // тело цикла MassIzm[i] = MassIzm[i+1]; } MassIzm[RMassIzm-1] = readSensor(); SrIzm = 0; // В исходное (нулевое) состояние for (int i = 0; i < RMassIzm; i++) // Суммируем все ячейки. ИТОГО. { // тело цикла SrIzm = SrIzm + MassIzm[i]; } SrIzm = SrIzm/RMassIzm; #if (DebugSerial == 1) Serial.print(" "); Serial.print(SrIzm,2); Serial.print(" "); #endif for (int i = 0; i < RMassIzm; i++) { // тело цикла #if (DebugSerial == 1) Serial.print(" "); Serial.print(MassIzm[i]); #endif } #if (DebugSerial == 1) Serial.println(" "); #endif return(SrIzm); }

InputSensor1.h

// Подпрограмма усреднения считанной влажности // Релиз от 11 февраля 2021 года float InputSensor() { float SrIzm = 0; int MassIzm [] = {10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25}; int RMassIzm = sizeof(MassIzm)/2; Serial.print(" "); Serial.println(RMassIzm); SrIzm = 0; // В исходное (нулевое) состояние for (int i = 0; i < RMassIzm; i++) // Суммируем все ячейки. ИТОГО. { // тело цикла SrIzm = SrIzm + MassIzm[i]; } SrIzm = SrIzm/RMassIzm; Serial.print(SrIzm,2); Serial.print(" "); for (int i = 0; i < RMassIzm; i++) { // тело цикла Serial.print(" "); Serial.print(MassIzm[i]); } Serial.println(" "); return(SrIzm); }

read_h_t.h

// Функция считывания с датчика влажности и температуры void read_h_t() { float h = dht.readHumidity(); float t = dht.readTemperature(); Serial.println(h); Serial.println(t); }

readSensor.h

// Функция чтения показаний с сенсора влажности int readSensor() { int val = 550; // 2 команды для отладки // return(val); // // Функция включения датч влажности на время digitalWrite(PowerSensorPin, HIGH); // Включить датчик delay(50); // Дать время питанию установиться val = analogRead(SensorPin); // Прочитать аналоговое значение от датчика digitalWrite(PowerSensorPin, LOW); // Выключить датчик return(val); // Вернуть аналоговое значение влажности }

relyShine.h

// Функция включения реле освещения void relyShine(int Hrs) { if ((Hrs > 7) && (Hrs < 22) && digitalRead(RELY_SHINE) == LOW) { // Если время больше 7 часов и меньше 22 часов digitalWrite(RELY_SHINE, HIGH); // Включить реле освещения Serial.print(Hrs); Serial.println("час. Свет вкл"); return; } if (((Hrs < 7) || (Hrs > 22)) && digitalRead(RELY_SHINE) == HIGH) { digitalWrite(RELY_SHINE, LOW); // Выключить реле Serial.print(Hrs); Serial.println("час. Свет выкл"); return; } Serial.print(Hrs); Serial.println("час. Со светом всё хорошо !!!"); return; }

relyWatering.h

// Функция включения реле полива void relyWatering(int Vlajn) { if (readSensor() >= Vlajn) { // Если с датчика больше или равно 650 digitalWrite(RELY_WATERING, HIGH); // Тогда включить реле полива Serial.print(readSensor()); Serial.print(" "); Serial.print(Vlajn); Serial.println(" Полив ВКЛ."); delay(1000); // ЗАдержка 1 секунда } else { digitalWrite(RELY_WATERING, LOW); // Иначе реле выключено Serial.print(readSensor()); Serial.print(" "); Serial.print(Vlajn); Serial.println("Полив ВЫКЛ."); } }

starter.h

// Функция запуска функций void starter() { Serial.print("==> "); Serial.println(time.gettime("H:i:s")); read_h_t(); relyShine(time.Hours); // Вызов функции вкл выкл света relyWatering(VlajnGr); // Вызов функции вкл полива Serial.print("readSensor/реальная влажнсть: "); Serial.println(InputSensor()); delay(Pausa5sek); }

© 2000-2021 - 26/2/21 11:22
Хостинг нашего сайта осуществляется узлом www.cherepovets-city.ru