#include #include #include "DHT.h" #include #include #include "RTClib.h" #define OLED_RESET 5 Adafruit_SSD1306 display(OLED_RESET); // создаём объект "дисплей" #define DHTPIN 2 // #define PIN_LED 10 // реле для фоторезистора // #define PIN_PHOTO_SENSOR A0 // фоторезистор int TrigPin = 4; // ультразвук тригер int EchoPin = 3; // ультразвук эхо int Cooler3 = 5; //вентилятор int Cooler2 = 6; //вентилятор int Cooler1 = 7; //вентилятор int ReleLightPin = 8; //Свет int distance, duration; DHT dht(DHTPIN, DHT22); RTC_DS3231 RTC; void setup() { Serial.begin (57600); pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); pinMode(ReleLightPin, OUTPUT); pinMode(Cooler1, OUTPUT); dht. begin(); Wire.begin(); RTC.begin(); RTC.adjust(DateTime(__DATE__, __TIME__)); // настройка текущей даты display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // инициализация дисплея по интерфейсу I2C, адрес 0x3C display.clearDisplay(); // очистка дисплея display.setTextSize(1); // установка размера шрифта display.setTextColor(WHITE); // установка цвета текста display.setCursor(0, 0); // установка курсора в позицию X = 0; Y = 0 display.print ("Sweet home!"); // записываем в буфер дисплея нашу фразу display.display(); // и её выводим на экран display.clearDisplay(); // очистка дисплея } void displayTempHumid(){ delay(10); duration = pulseIn(EchoPin, HIGH);//Значение с пина Echo, считывается и записывается в значение duration duration = duration/29/2;//Подсчёт дистанции. Скорость звука 340 м/с или 29 микросекунд на сантиметр // считывание данных о температуре и влажности // занимает около 250 мс; кроме того, это считывание // может запаздывать примерно на 2 секунды // (это очень медленный датчик): // считываем влажность float h = dht.readHumidity(); // считываем температуру в градусах Цельсия: float t = dht.readTemperature(); } void loop() { DateTime now = RTC.now(); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(' '); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); float h = dht.readHumidity(); //Считываем влажность в переменную "h" float t = dht.readTemperature(); //Считываем температуру в переменную "t" if (isnan(t) || isnan(h)) { //если неправильно считалась информация { Serial.println ("Ошибка при считывании информации"); //выводим надпись в программе } else { //иначе Serial.print ("Humidity: "); //выводим надпись Humidity Serial.print (h); //выводим значение переменной влажности Serial.print (" %\t"); //выводим надпись %\t Serial.print ("Temperature: "); //выводим надпись в программе Serial.print (t); //выводим переменную температуры Serial.println (" *C"); //выводим надпись *C digitalWrite(TrigPin, HIGH);//На пин Trig подаётся логическая единица. delayMicroseconds(2);//Удерживается это состояние в микросекундах digitalWrite(TrigPin, LOW);//убирается это состояние duration = pulseIn(EchoPin, HIGH);//Значение с пина Echo, считывается и записывается в значение duration duration = duration/29/2;//Подсчёт дистанции. Скорость звука 340 м/с или 29 микросекунд на сантиметр Serial.print(duration); Serial.println(" cm"); if (duration<60) // Если расстояние менее 50 сантиметром { digitalWrite(ReleLightPin, HIGH); // Ламгы горитят 6 секунд delay(6000); } else { digitalWrite(ReleLightPin, LOW); // иначе не горит } delay(100); } if (h > 75) //Указываем условие, если влажность больше 75% { digitalWrite (Cooler1, HIGH); //то включаем наше реле, которое приводит в действие вентилятор(Ы) } else //иначе if (h <= 65) //Если влажность равна 65 или меньше { digitalWrite (Cooler1, LOW); //Реле будет выключено, вентилятор не работает } display.clearDisplay(); // очистка дисплея display.setTextSize(1); // установка размера шрифта display.setTextColor(WHITE); // установка цвета текста display.setCursor(0, 0); // установка курсора в позицию X = 0; Y = 0 display.println("Time: "); // записываем в буфер дисплея нашу фразу display.setCursor(30, 0); // установка курсора в позицию X = 30; Y = 0 display.print (now.hour(), DEC); // записываем в буфер дисплея нашу фразу display.setCursor(42.5, 0); // установка курсора в позицию X = 42,5; Y = 0 display.println(":"); // записываем в буфер дисплея нашу фразу display.setCursor(50, 0); // установка курсора в позицию X = 50; Y = 0 display.println(now.minute(), DEC); // записываем в буфер дисплея нашу фразу display.setCursor(65, 0); // установка курсора в позицию X = 65; Y = 0 display.println(":"); // записываем в буфер дисплея нашу фразу display.setCursor(75, 0); // установка курсора в позицию X = 75; Y = 0 display.println(now.second(), DEC); // записываем в буфер дисплея нашу фразу display.setCursor(0, 8); // установка курсора в позицию X = 0; Y = 8 display.println("Data: "); // записываем в буфер дисплея нашу фразу display.setCursor(30, 8); // установка курсора в позицию X = 30; Y = 8 display.println(now.day(), DEC); // записываем в буфер дисплея нашу фразу display.setCursor(42.5, 8); // установка курсора в позицию X = 42,5; Y = 8 display.println("/"); // записываем в буфер дисплея нашу фразу display.setCursor(50, 8); // установка курсора в позицию X = 50; Y = 8 display.println(now.month(), DEC); // записываем в буфер дисплея нашу фразу display.setCursor(65, 8); // установка курсора в позицию X = 65; Y = 8 display.println("/"); // записываем в буфер дисплея нашу фразу display.setCursor(75, 8); // установка курсора в позицию X = 75; Y = 8 display.println(now.year(), DEC); // записываем в буфер дисплея нашу фразу display.setCursor(0, 16); // установка курсора в позицию X = 0; Y = 16 display.println("h: "); // записываем в буфер дисплея нашу фразу display.setCursor(15, 16); // установка курсора в позицию X = 15; Y = 16 display.println(h); // записываем в буфер дисплея нашу фразу display.setCursor(50, 16); // установка курсора в позицию X = 50; Y = 16 display.setCursor(0, 25); // установка курсора в позицию X = 0; Y = 25 display.println("t: "); // записываем в буфер дисплея нашу фразу display.setCursor(15, 25); // установка курсора в позицию X = 15; Y = 25 display.println(t); // записываем в буфер дисплея нашу фразу display.setCursor(50, 25); // установка курсора в позицию X = 50; Y = 25 display.println("%"); // записываем в буфер дисплея нашу фразу display.setCursor(65, 16); // установка курсора в позицию X = 65; Y = 16 display.println("d: "); // записываем в буфер дисплея нашу фразу display.setCursor(75, 16); // установка курсора в позицию X = 75; Y = 16 display.println(duration); display.display(); }