#include <DHT.h>
#define DHTPIN 15 // Pin data DHT22 terhubung ke pin GPIO4
#define DHTTYPE DHT22 // Tipe sensor DHT22
#define HEATERPIN 12 // Pin untuk mengendalikan pemanas terhubung ke pin GPIO12
#define BUTTONPIN 14 // Pin untuk tombol interrupt terhubung ke pin GPIO14
DHT dht(DHTPIN, DHTTYPE);
bool manualHeating = false;
void IRAM_ATTR toggleHeating() {
manualHeating = !manualHeating;
}
void setup() {
Serial.begin(9600);
pinMode(HEATERPIN, OUTPUT);
pinMode(BUTTONPIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(BUTTONPIN), toggleHeating, FALLING);
dht.begin();
}
void loop() {
delay(2000); // Interval pembacaan sensor
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Gagal membaca sensor DHT22!");
return;
}
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.print("°C, Kelembaban: ");
Serial.print(humidity);
Serial.println("%");
// Cek apakah suhu di bawah ambang batas
if (temperature < 25 || manualHeating) { // Misalnya ambang batas suhu inkubator adalah 37.5 derajat Celsius
digitalWrite(HEATERPIN, HIGH); // Hidupkan pemanas
} else {
digitalWrite(HEATERPIN, LOW); // Matikan pemanas
}
}