#include "globals.h"
#include "check.h"
#include "ESP32Servo.h"
#include "DHTesp.h";
#include "LiquidCrystal_I2C.h";
DHTesp dhtSensor;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void initLCD() {
lcd.init();
lcd.backlight();
}
int redLed = 32; // Red LED
int yellowLed = 33; // Yellow LED
int greenLed = 25; // Green LED
float temp = 0;
Servo servo;
void setup() {
initLCD();
dhtSensor.setup(19, DHTesp::DHT22);
pinMode(redLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
pinMode(greenLed, OUTPUT);
Serial.begin(9600);
lcd.setCursor(0,0);
lcd.print("Starting... ");
Serial.println("Starting...");
delay(3000);
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
temp = data.temperature;
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.print(String(data.temperature, 2));
lcd.print(" C");
lcd.setCursor(0,1);
lcd.print("Humidity: ");
lcd.print(String(data.humidity, 1));
lcd.print(" %");
servo.attach(17, 500, 2400);
Serial.println("Processing");
// Red light on for 2 seconds
if (temp > 30) {
digitalWrite(redLed, 1);
digitalWrite(yellowLed, 0);
digitalWrite(greenLed, 0);
servo.write(180);
delay(2000);
servo.write(0);
delay(2000);
}else if(temp > 20 && temp <= 30){
// Yellow light on for 0.5 seconds
digitalWrite(redLed, 0);
digitalWrite(yellowLed, 1);
digitalWrite(greenLed, 0);
servo.write(180);
delay(1500);
servo.write(0);
delay(1500);
}else if(temp >= 0 && temp <=20 ){
// Green light on for 5 seconds
digitalWrite(redLed, 0);
digitalWrite(yellowLed, 0);
digitalWrite(greenLed, 1);
servo.write(180);
delay(500);
servo.write(0);
delay(500);
}else{
digitalWrite(redLed, 1);
digitalWrite(yellowLed, 1);
digitalWrite(greenLed, 1);
checkTemperature();
}
}