К сожалению отклика так и не дождался (( но есть положительный момент, сам переписал код и он рабочий.
// Рабочая версия
#include <LiquidCrystal.h>
LiquidCrystal lcd(3, 4, 25, 24, 23, 22);
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
//Время калибровки датчика (10-60 сек. по даташиту)
int calibrationTime = 30;
//Время, в которое был принят сигнал движения(HIGH)
long unsigned int timee;
//Пауза, после которой движение считается оконченным
// 5 минут , таймер-резистр самого датчика стоит на минимуме 5 сек.
long unsigned int pause = 300000;
int pirPin = 41; //вывод подключения PIR датчика
int ledPin = 50; //вывод сигнального диода (реле включено)
int ledPin2 = 44; //вывод сигнального диода 2 (нет движения)
int relayPin = 40; //реле пин
int PhotoRPin = A8; //Фоторезистор
int PhotoRValue;
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print("Microklimat:");
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW);
delay(500);
digitalWrite(pirPin, LOW);
//дадим датчику время на калибровку
for(int i = 0; i < calibrationTime; i++)
{
//Во время калибровки будет мигать сигнальный диод
i % 2 ? digitalWrite(ledPin, HIGH) : digitalWrite(ledPin, LOW);
delay(1000);
}
//По окончанию калибровки зажжем сигнальный диод
digitalWrite(ledPin, LOW);
digitalWrite(ledPin2, LOW);
Serial.println("SENSOR ACTIVE");
delay(50);
dht.begin();
}
void loop()
{
//выводим температуру и влажность на екранчик
lcd.setCursor(0, 1);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(t) || isnan(h)) {
lcd.print("Temp-ra error");
} else {
lcd.print("C=");
lcd.print(t);
lcd.print(" H=");
lcd.print(h);
}
{
PhotoRValue = analogRead(PhotoRPin);
delay(1000);
}
//Если обнаружено движение
if(digitalRead(pirPin) == HIGH)
{
// Записываем время когда началось дижение
timee=millis();
digitalWrite(ledPin2, LOW);
// Проверяем освещённость в комнате
if (PhotoRValue<50)
{
//Включаем реле.
digitalWrite(relayPin, HIGH);
digitalWrite(ledPin, HIGH);
// delay(50);
}
}
//Ели движения нет
if(digitalRead(pirPin) == LOW)
{
digitalWrite(ledPin2, HIGH);
//Если время без движение превышает паузу => движение окончено
if(millis()- timee > pause)
{
digitalWrite(relayPin, LOW);
digitalWrite(ledPin, LOW);
// delay(50);
}
}
}