#include <LiquidCrystal.h>
#include <DHT.h>
#include <Servo.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
Servo servo1;
Servo servo2;
const int redLed = 3;
const int greenLed = 4;
const int yellowLed = 5;
const int servoPin1 = 6;
const int servoPin2 = 7;
// Define servo positions for different temperature ranges
const int servoLowTempPos = 90; // Adjust as needed
const int servoHighTempPos = 0; // Adjust as needed
void setup() {
lcd.begin(16, 2);
lcd.print("Roll No: 2347133");
delay(2000); // Display roll number for 2 seconds
lcd.clear();
dht.begin();
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
servo1.attach(servoPin1);
servo2.attach(servoPin2);
// Initialize servos to a neutral position (optional)
servo1.write(90);
servo2.write(90);
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
// Display humidity if required (replace with distance if applicable)
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(humidity);
lcd.print(" %");
// LED and servo control based on temperature
if (temperature < 20) {
digitalWrite(redLed, HIGH);
digitalWrite(greenLed, LOW);
digitalWrite(yellowLed, LOW);
servo1.write(servoLowTempPos); // Use defined position
servo2.write(servoHighTempPos); // Use defined position
} else if (temperature >= 20 && temperature <= 25) {
digitalWrite(redLed, LOW);
digitalWrite(greenLed, HIGH);
digitalWrite(yellowLed, LOW);
servo1.write(90); // Neutral position
servo2.write(90); // Neutral position
} else {
digitalWrite(redLed, LOW);
digitalWrite(greenLed, LOW);
digitalWrite(yellowLed, HIGH);
servo1.write(servoHighTempPos); // Use defined position
servo2.write(servoLowTempPos); // Use defined position
}
delay(2000); // Update every 2 seconds
}