//inisial nilai pin yang digunakan
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int ledPinRed = 18;
const int ledPinGreen = 5;
const int pushButton = 4;
const int DHT_Pin =2; // The DHT pin
float temperature ; // Sensor temperature
float humidity; // Sensor Humidity
DHT dht(DHT_Pin, DHT22);
bool lcdOn = true; // Status LCD, defaultnya aktif
bool displayTemp = true; // Status untuk menampilkan suhu atau kelembapan
bool systemOn = true; // Status perangkat hidup/mati
bool buttonState = HIGH; // Status awal tombol (off)
void setup() {
Serial.begin(115200);
pinMode(ledPinRed, OUTPUT);
pinMode(ledPinGreen, OUTPUT);
pinMode(pushButton, INPUT);
dht.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("ICT ATS PROJECT");
lcd.setCursor(0, 1);
lcd.print("about H&T sensor");
delay(1000);
}
void loop() {
int newButtonState = digitalRead(pushButton);
if (newButtonState == LOW && buttonState == HIGH) {
// Tombol ditekan, toggle status perangkat
systemOn = !systemOn;
if (systemOn) {
// Perangkat dihidupkan kembali, tampilkan pesan di LCD
lcdOn = true;
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("SYSTEM ON");
delay(1000);
lcd.setCursor(0, 1); // Pindahkan kursor ke baris kedua
lcd.print(" "); // Menghapus baris kedua dengan karakter kosong (spasi)
} else {
lcdOn = false;
digitalWrite(ledPinGreen, LOW);
digitalWrite(ledPinRed, LOW);
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("SYSTEM OFF");
delay(1000);
}
}
buttonState = newButtonState;
Serial.println(buttonState);
if (buttonState == 1){
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
lcd.setCursor(6, 0);
lcd.print(temperature);
lcd.print(" c ");
lcd.setCursor(12, 1);
lcd.print(humidity);
lcd.print(" % ");
delay(500);
if (temperature >15.0) {
{
digitalWrite(ledPinRed, HIGH);
digitalWrite(ledPinGreen, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HIGH TEMPRATURE");
lcd.setCursor(6, 1);
lcd.print("ALERT!");
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.setCursor(0, 1);
lcd.print("Kelembapan: ");
}
}
else {
{
digitalWrite(ledPinGreen, HIGH);
digitalWrite(ledPinRed, LOW);
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("low temprature");
lcd.setCursor(4, 1);
lcd.print("all safe");
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.setCursor(0, 1);
lcd.print("Kelembapan: ");
}
}
}
}