#include <DHT.h> // DHT library for temperature and humidity
#include <Adafruit_Sensor.h>
#define DHTPIN 15 // DHT sensor pin
#define DHTTYPE DHT22 // Define DHT sensor type (DHT22)
DHT dht(DHTPIN, DHTTYPE);
#define TEMP_THRESHOLD 30 // Example temperature threshold in Celsius
#define HUMIDITY_THRESHOLD 70 // Example humidity threshold in %
#define HEATER_PIN 14 // Heater control pin
#define MOTOR_PIN 13 // DC motor control pin
#define PELTIER_PIN 27 // Peltier module control pin
float temperature = 0.0, humidity = 0.0;
void setup() {
Serial.begin(9600);
// Initialize sensors
dht.begin();
// Initialize output devices
pinMode(HEATER_PIN, OUTPUT);
pinMode(MOTOR_PIN, OUTPUT);
pinMode(PELTIER_PIN, OUTPUT);
// Turn off all output devices initially
digitalWrite(HEATER_PIN, LOW);
digitalWrite(MOTOR_PIN, LOW);
digitalWrite(PELTIER_PIN, LOW);
}
void loop() {
// Read temperature and humidity
temperature = dht.readTemperature();
humidity = dht.readHumidity();
// Print sensor readings
Serial.print("Temperature: "); Serial.print(temperature); Serial.println(" *C");
Serial.print("Humidity: "); Serial.print(humidity); Serial.println(" %");
// Control logic for output devices
controlHeater();
controlDCMotor();
controlPeltier();
delay(2000); // Adjust delay as per required sampling rate
}
void controlHeater() {
if (temperature < TEMP_THRESHOLD) {
digitalWrite(HEATER_PIN, HIGH); // Turn on heater if temperature is below threshold
Serial.println("Heater ON");
} else {
digitalWrite(HEATER_PIN, LOW); // Turn off heater
Serial.println("Heater OFF");
}
}
void controlDCMotor() {
if (humidity > HUMIDITY_THRESHOLD) {
digitalWrite(MOTOR_PIN, HIGH); // Run motor if humidity is high
Serial.println("DC Motor ON");
} else {
digitalWrite(MOTOR_PIN, LOW);
Serial.println("DC Motor OFF");
}
}
void controlPeltier() {
if (temperature > TEMP_THRESHOLD) {
digitalWrite(PELTIER_PIN, HIGH); // Cool down if temperature exceeds threshold
Serial.println("Peltier ON (Cooling)");
} else {
digitalWrite(PELTIER_PIN, LOW);
Serial.println("Peltier OFF");
}
}