#include <ESP32Servo.h>
#include <WiFi.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 13
#define DHTTYPE DHT22
const int LEDR_PIN = 5;
const int LEDB_PIN = 16;
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
int ledState1;
int ledState2;
const int ldrPin = 2;
const int servoPin = 4;
Servo servo;
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;
void setup() {
Wire.begin();
servo.attach(servoPin, 500, 2400);
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Cao Thi Lan Anh");
lcd.setCursor(0, 1);
lcd.print("21161156");
Serial.begin(115200);
pinMode(LEDR_PIN, OUTPUT);
pinMode(LEDB_PIN, OUTPUT);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("Wifi not connected");
}
Serial.println("Wifi connected !");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
}
void loop() {
int ldrValue = analogRead(ldrPin);
int servoAngle;
if (ldrValue > 2000) {
servoAngle = 180;
} else {
servoAngle = 0;
}
servo.write(servoAngle);
Serial.print("LDR Value: ");
Serial.print(ldrValue);
Serial.print(" | Servo Angle: ");
Serial.println(servoAngle);
delay(100);
int ledState1 = digitalRead(LEDB_PIN);
int ledState2 = digitalRead(LEDR_PIN);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (t < 10) {
digitalWrite(LEDB_PIN, HIGH);
delay(300);
digitalWrite(LEDB_PIN, LOW);
delay(300);
}else if (t > 50){
digitalWrite(LEDR_PIN, HIGH);
delay(300);
digitalWrite(LEDR_PIN, LOW);
delay(300);
}
Serial.println("Temp: " + String(t, 2) + "°C");
Serial.println("Humidity: " + String(h, 1) + "%");
Serial.println("---");
delay(1000);
}