#include <DHT.h>
#include <Servo.h>

#define DHTPIN 2      // Pin untuk sensor DHT
#define DHTTYPE DHT22 // Tipe sensor DHT
#define RELAY_PIN 3   // Pin untuk relay pemanas
#define FAN_PIN 4     // Pin untuk relay kipas
#define SERVO_PIN 9   // Pin untuk motor servo

DHT dht(DHTPIN, DHTTYPE);
Servo eggTurner;

const float setPointTemp = 37.5; // Suhu ideal dalam derajat Celsius
const float setPointHum = 60.0;  // Kelembaban ideal dalam persentase

void setup() {
  pinMode(RELAY_PIN, OUTPUT);
  pinMode(FAN_PIN, OUTPUT);
  eggTurner.attach(SERVO_PIN);
  
  dht.begin();
  Serial.begin(9600);
}

void loop() {
  float temp = dht.readTemperature();
  float hum = dht.readHumidity();
  
  Serial.print("Suhu: ");
  Serial.print(temp);
  Serial.print(" °C, Kelembaban: ");
  Serial.print(hum);
  Serial.println(" %");

  if (temp < setPointTemp) {
    digitalWrite(RELAY_PIN, HIGH); // Nyalakan pemanas
  } else {
    digitalWrite(RELAY_PIN, LOW);  // Matikan pemanas
  }

  if (hum < setPointHum) {
    digitalWrite(FAN_PIN, LOW);  // Matikan kipas
  } else {
    digitalWrite(FAN_PIN, HIGH); // Nyalakan kipas
  }

  static unsigned long lastTurnTime = 0;
  unsigned long currentTime = millis();
  
  if (currentTime - lastTurnTime >= 4 * 60 * 60 * 1000) { // Balik setiap 4 jam
    eggTurner.write(eggTurner.read() == 0 ? 180 : 0); // Balik telur
    lastTurnTime = currentTime;
  }
  
  delay(2000); // Tunda 2 detik sebelum membaca ulang sensor
}
$abcdeabcde151015202530fghijfghij
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module