#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
const int heaterPin = 13;
const int ledPin = 9;
const int buttonStartPin = 2;
const int buttonStopPin = 3;
const int buttonUpPin = 4;
const int buttonDownPin = 5;
const int DHTPin = 7;
const int DHTType = DHT22;
DHT dht(DHTPin, DHTType);
int targetTemperature = 35;
int targetHumidity = 40;
float currentTemperature = 0.0;
float currentHumidity = 0.0;
int screenMode = 0;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
pinMode(heaterPin, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(buttonStartPin, INPUT_PULLUP);
pinMode(buttonStopPin, INPUT_PULLUP);
pinMode(buttonUpPin, INPUT_PULLUP);
pinMode(buttonDownPin, INPUT_PULLUP);
Serial.begin(9600);
lcd.init();
lcd.backlight();
dht.begin();
lcd.setCursor(5, 1);
lcd.print("Inkubator");
lcd.setCursor(7, 2);
lcd.print("Bayi");
delay(2000);
lcd.clear();
}
void loop() {
currentTemperature = dht.readTemperature();
currentHumidity = dht.readHumidity();
// Menampilkan informasi di LCD
switch (screenMode) {
case 0: // Mode Atur Suhu
lcd.setCursor(5, 1);
lcd.print("Set Temp: ");
lcd.setCursor(7, 2);
lcd.print(targetTemperature);
lcd.print(" C ");
break;
case 1: // Mode Atur Kelembaban
lcd.setCursor(3, 1);
lcd.print("Set Humidity: ");
lcd.setCursor(7, 2);
lcd.print(targetHumidity);
lcd.print("%");
break;
case 2: // Mode Baca Suhu dan Kelembaban
lcd.setCursor(0, 0);
lcd.print("Temp : ");
lcd.print(currentTemperature);
lcd.print(" C ");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(currentHumidity);
lcd.print("%");
lcd.setCursor(0, 2);
lcd.print("Target : ");
lcd.print(targetTemperature);
lcd.print(" C");
lcd.setCursor(0, 3);
lcd.print("Press Stop to stop");
break;
}
// Tombol Start
if (digitalRead(buttonStartPin) == LOW) {
if (screenMode == 0) {
screenMode = 1;
} else if (screenMode == 1) {
screenMode = 2;
} else if (screenMode == 2) {
turnOnHeater();
}
delay(200);
}
// Tombol Stop
if (digitalRead(buttonStopPin) == LOW) {
if (screenMode == 2) {
turnOffHeater();
screenMode = 0;
}
lcd.clear();
delay(200);
}
// Tombol Up
if (digitalRead(buttonUpPin) == LOW) {
if (screenMode == 0) {
if (targetTemperature < 40) {
targetTemperature++;
}
} else if (screenMode == 1) {
if (targetHumidity < 60) {
targetHumidity++;
}
}
delay(200);
}
// Tombol Down
if (digitalRead(buttonDownPin) == LOW) {
if (screenMode == 0) {
if (targetTemperature > 35) {
targetTemperature--;
}
} else if (screenMode == 1) {
if (targetHumidity > 40) {
targetHumidity--;
}
}
delay(200);
}
}
void turnOnHeater() {
if (currentTemperature < targetTemperature) {
digitalWrite(ledPin, HIGH);
digitalWrite(heaterPin, HIGH);
}
}
void turnOffHeater() {
if (currentTemperature >= targetTemperature) {
digitalWrite(ledPin, LOW);
digitalWrite(heaterPin, LOW);
}
}