#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 4 // Pin tempat Anda menghubungkan sensor DHT11
#define DHTTYPE DHT22 // Tipe sensor DHT
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD 0x27 (Anda mungkin perlu menyesuaikan ini)
const int purpleLedPin = 12; // Pin LED ungu
const int redLedPin = 2; // Pin LED merah
const int buttonPin = 5; // Pin untuk tombol on/off
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() {
pinMode(purpleLedPin, OUTPUT);
pinMode(redLedPin, OUTPUT);
dht.begin();
lcd.init();
lcd.backlight();
lcd.clear(); // Hapus konten layar LCD saat inisialisasi
pinMode(buttonPin, INPUT_PULLUP); // Inisialisasi tombol dengan pull-up internal
}
void loop() {
// Baca tombol ON/OFF
int newButtonState = digitalRead(buttonPin);
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(0, 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 {
// Perangkat dimatikan, matikan semua perangkat
lcdOn = false;
digitalWrite(purpleLedPin, LOW);
digitalWrite(redLedPin, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("System OFF");
delay(1000);
}
}
buttonState = newButtonState;
if (systemOn) {
// Baca suhu dan kelembapan dari sensor DHT11
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (temperature <= 15) {
digitalWrite(purpleLedPin, HIGH); // Nyalakan LED ungu
digitalWrite(redLedPin, LOW); // Matikan LED merah
lcd.setCursor(0, 0);
lcd.print("Status: PURPLE ");
} else {
digitalWrite(purpleLedPin, LOW); // Matikan LED ungu
digitalWrite(redLedPin, HIGH); // Nyalakan LED merah
lcd.setCursor(0, 0);
lcd.print("Status: RED ");
}
// Tampilkan suhu atau kelembapan bergantian di baris kedua LCD
lcd.setCursor(0, 1);
lcd.print(" "); // Menghapus baris kedua dengan karakter kosong (spasi)
lcd.setCursor(0, 1); // Pindahkan kursor ke baris kedua
if (displayTemp) {
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
} else {
lcd.print("Humidity: ");
lcd.print(humidity);
lcd.print("%");
}
displayTemp = !displayTemp;
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("System OFF");
digitalWrite(purpleLedPin, LOW);
digitalWrite(redLedPin, LOW);
}
delay(1000);
}
esp1:VIN
esp1:GND.2
esp1:D13
esp1:D12
esp1:D14
esp1:D27
esp1:D26
esp1:D25
esp1:D33
esp1:D32
esp1:D35
esp1:D34
esp1:VN
esp1:VP
esp1:EN
esp1:3V3
esp1:GND.1
esp1:D15
esp1:D2
esp1:D4
esp1:RX2
esp1:TX2
esp1:D5
esp1:D18
esp1:D19
esp1:D21
esp1:RX0
esp1:TX0
esp1:D22
esp1:D23
dht1:VCC
dht1:SDA
dht1:NC
dht1:GND
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
led1:A
led1:C
led2:A
led2:C
r1:1
r1:2
r2:1
r2:2