#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
const int LDR_PIN = A0;
const int RELAY_PIN = 8;
const int LED_PIN = 9;
const int BUZZER = 6;
// -------- Параметры (разрешено менять) --------
float minTempC = 15.0; // минимальная комфортная температура
float maxTempC = 25.0; // максимальная комфортная температура
int lightThreshold = 395; // порог "темно"
int alarmToneHz = 4000; // частота тревоги
// ----------------------------------------------
DHT dht(DHTPIN, DHTTYPE);
void setup() {
pinMode(RELAY_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(BUZZER, OUTPUT);
dht.begin();
Serial.begin(9600);
Serial.println("Animal Room Climate Control");
}
void loop() {
float humidity = dht.readHumidity();
float temp = dht.readTemperature();
int lightRaw = analogRead(LDR_PIN);
bool dark = (lightRaw < lightThreshold);
bool cold = (temp < minTempC);
bool hot = (temp > maxTempC);
// управление реле (обогрев / лампа)
if (cold || dark) {
digitalWrite(RELAY_PIN, HIGH);
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(RELAY_PIN, LOW);
digitalWrite(LED_PIN, LOW);
}
// тревога при перегреве
if (hot) {
tone(BUZZER, alarmToneHz, 150);
} else {
noTone(BUZZER);
}
Serial.print("Temp=");
Serial.print(temp);
Serial.print("C Hum=");
Serial.print(humidity);
Serial.print("% Light=");
Serial.print(lightRaw);
Serial.print(dark ? " (DARK)" : " (BRIGHT)");
Serial.print(" Relay=");
Serial.print((cold || dark) ? "ON" : "OFF");
Serial.print(" Hot=");
Serial.println(hot ? "YES" : "NO");
delay(1000);
}