#include <DHT.h>
#include <Wire.h> //Подключаем библиотеку для использования I2C интерфейса с модулем RTC
#include “RTClib.h” //Подключаем библиотеку для использования модуля часов реального времени RTC
#include <LiquidCrystal_I2C.h>
RTC_DS1307 RTC; //Создаем переменную класса - для использования RTC
//задаем адрес LCD экрана 0x27, 16 символов, 2 строки
LiquidCrystal_I2C lcd(0x27,16,2);
int svet =3;
#define DHTPIN 2
#define DHTTYPE DHT11
int t =4;
int h =5;
DHT dht(DHTPIN, DHTTYPE);
byte degree[8] = // кодируем символ градуса
{
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
};
int value =0;
int analogPin= A1;
int poliv =6;
int norma =300;
void setup () {
lcd.init(); // Инициализируем экран
lcd.backlight(); //без подсветки,буквы плохо видно
Serial.begin(9600);
Wire.begin();
RTC.begin();
pinMode(svet, OUTPUT);
lcd.createChar(1, degree);
dht.begin();
pinMode(t, OUTPUT);
pinMode(h, OUTPUT);
pinMode(analogPin, INPUT);
pinMode(poliv, OUTPUT);
}
void loop () {
//освещение пин 3
DateTime now = RTC.now();
if (now.hour() >= 8 && now.hour() < 15)
digitalWrite(svet, LOW);//включено
else
digitalWrite(svet,HIGH);//Отключено
int val = digitalRead(svet);
if (val == LOW){
lcd.setCursor(12,0);
lcd.print(“S”);}
else if(val == HIGH)
{
lcd.setCursor(12,0);
lcd.print(“s”);}
//часы
if (millis() % 1000 == 0) {
lcd.setCursor(3,1);
lcd.print(now.month(), DEC);//месяц
lcd.setCursor(2,1);
lcd.print(“:”);
lcd.setCursor(0,1);
lcd.print(now.day(), DEC);//день
lcd.setCursor(0,0);
lcd.print(now.hour(), DEC);//час
lcd.setCursor(2,0);
lcd.print(“:”);
lcd.setCursor(3,0);
lcd.print(now.minute(), DEC);//минуты
//температура пин 2 вход температура пин 4 вых и влажность пин 5 вых
int h = dht.readHumidity();
int t = dht.readTemperature();
if (t > 25)
{
digitalWrite (t, HIGH);
}
else
{
digitalWrite (t, LOW);}
int val = digitalRead(t);
if (val == HIGH){
lcd.setCursor(13,0);
lcd.print(“T”);}
else if(val == LOW)
{
lcd.setCursor(13,0);
lcd.print(“t”);}
delay (1000);
if (h > 45)
{
digitalWrite (h, HIGH);
}
else
{
digitalWrite (h, LOW);}
int val = digitalRead(h););
if (val == HIGH)
{
lcd.setCursor(14,0);
lcd.print(“H”);}
else if(val == LOW)
{
lcd.setCursor(14,0);
lcd.print(“h”);}
delay(1000);
lcd.setCursor(10, 1);
lcd.print(“%”);
lcd.setCursor(8, 1);
lcd.print(h);
lcd.setCursor(10, 0);
lcd.print(“C”);
lcd.setCursor(8,0);
lcd.print(t);
//полив вход а1 выход 6
if (analogRead(analogPin) >= norma)
digitalWrite(poliv, LOW);
else
digitalWrite(poliv, HIGH);
int val = digitalRead(poliv);
if (val == LOW){
lcd.setCursor(15,0);
lcd.print(“P”);}
else if(val == HIGH)
{
lcd.setCursor(15,0);
lcd.print(“p”);}
delay (1000);
}
}
если четыре или три ошибка в строк int val = digitalRead( ) при двух int val = digitalRead( ); программа работает нормально