#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <WiFi.h>
#define DHT_INSIDE_PIN 2
#define DHT_INSIDE_TYPE DHT22
DHT dht_inside(DHT_INSIDE_PIN, DHT_INSIDE_TYPE);
#define DHT_OUTSIDE_PIN 4
#define DHT_OUTSIDE_TYPE DHT22
DHT dht_outside(DHT_OUTSIDE_PIN, DHT_OUTSIDE_TYPE);
LiquidCrystal_I2C lcd(0x27,16,2);
#define heat 5
#define cooling_system 18
void setup() {
pinMode(heat, OUTPUT);
pinMode(cooling_system, OUTPUT);
dht_inside.begin();
dht_outside.begin();
lcd.init();
lcd.clear();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("WiFi");
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
lcd.print(".");
}
lcd.clear();
lcd.print("Connected");
delay(2000);
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Incubator");
lcd.setCursor(2,1);
lcd.print("is Ready!");
delay(2000);
lcd.clear();
}
void loop() {
float h_in = dht_inside.readHumidity();
float t_in = dht_inside.readTemperature();
float h_out = dht_outside.readHumidity();
float t_out = dht_outside.readTemperature();
while (isnan(h_in) || isnan(t_in)||isnan(h_out) || isnan(t_out)) {
lcd.clear();
delay(500);
lcd.setCursor(0, 0);
lcd.print("sensor error!");
delay(1000);
}
lcd.setCursor(0,0);
lcd.print("In H:");
lcd.print(h_in, 0);
lcd.print("%");
lcd.print(" t:");
lcd.print(t_in, 1);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Ex H:");
lcd.print(h_out, 0);
lcd.print("%");
lcd.print(" t:");
lcd.print(t_out, 1);
lcd.print("C");
delay(500);
if(t_in < 36) digitalWrite(heat, HIGH);
else if (t_in > 37) digitalWrite(heat, LOW);
if(t_in > 38) digitalWrite(cooling_system, HIGH);
else if(t_in <= 37.8) digitalWrite(cooling_system, LOW);
}