#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include "DHT.h"
#define DHTPIN1 19
#define DHTPIN2 13
#define DHTTYPE DHT22
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
DHT dht1(DHTPIN1, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);
const uint8_t ROWS = 4;
const uint8_t COLS = 4;
char keys[ROWS][COLS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
uint8_t colPins[COLS] = { 4, 0, 2, 15 }; // Pins connected to C1, C2, C3, C4
uint8_t rowPins[ROWS] = { 18, 5, 17, 16 }; // Pins connected to R1, R2, R3, R4
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
String keyinput = "";
String keysave = "121103";
bool statusmatch = false;
bool ruanganA = false;
bool ruanganB = false;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
while(!statusmatch) {
lcd.setCursor(0,0);
lcd.print("Input Password");
char key = keypad.getKey();
if (key != NO_KEY) {
if(key !='D') {
keyinput = keyinput+key;
Serial.println(keyinput);
lcd.setCursor(0,1);
lcd.print(keyinput);
} else {
if(keyinput == keysave) {
statusmatch = true;
lcd.setCursor(0,1);
lcd.print(" Sukses ");
delay(2000);
lcd.clear();
} else {
keyinput = "";
lcd.setCursor(0,1);
lcd.print(" Salah ");
delay(2000);
lcd.clear();
}
}
}
}
Serial.println("Login Success");
keyinput = "";
dht1.begin();
dht2.begin();
}
void loop() {
float h1 = dht1.readHumidity();
float t1 = dht1.readTemperature();
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();
if(ruanganA) {
inkey();
Serial.print("Ruangan 1 ");
Serial.print("Suhu 1 : ");
Serial.print(t1);
Serial.print(" Kel 1 : ");
Serial.println(h1);
lcd.setCursor(0,0);
lcd.print("1.");
//Tampilan LCD Humidity
lcd.setCursor(2,0);
lcd.print("Hum=");
lcd.setCursor(7,0);
lcd.print(h1);
lcd.setCursor(12,0);
lcd.print("%");
//Tampilan LCD Temperature
lcd.setCursor(2,1);
lcd.print("Tem=");
lcd.setCursor(7,1);
lcd.print(t1);
lcd.setCursor(12,1);
lcd.print((char)223);
lcd.print("C");
delay(10);
}
else if (ruanganB) {
inkey();
Serial.print("Ruangan 2 ");
Serial.print("Suhu 2 : ");
Serial.print(t2);
Serial.print(" Kel 2 : ");
Serial.println(h2);
lcd.setCursor(0,0);
lcd.print("2.");
//Tampilan LCD Humidity
lcd.setCursor(2,0);
lcd.print("Hum=");
lcd.setCursor(7,0);
lcd.print(h2);
lcd.setCursor(12,0);
lcd.print("%");
//Tampilan LCD Temperature
lcd.setCursor(2,1);
lcd.print("Tem=");
lcd.setCursor(7,1);
lcd.print(t2);
lcd.setCursor(12,1);
lcd.print((char)223);
lcd.print("C");
delay(10);
} else {
inkey();
}
}
void inkey() {
char key = keypad.getKey();
// lcd.setCursor(0,0);
// lcd.print("Masukkan Ruangan");
// lcd.setCursor(0,1);
// lcd.print("--> ");
if (key != NO_KEY) {
if(key !='D') {
keyinput = key;
lcd.setCursor(15,0);
lcd.print(keyinput);
} else {
if(keyinput == "A") {
ruanganA = !ruanganA;
ruanganB = false;
// Tambahkan perintah untuk menonaktifkan tampilan ruangan B di sini
lcd.clear();
} else if(keyinput == "B") {
ruanganB = !ruanganB;
ruanganA = false;
// Tambahkan perintah untuk menonaktifkan tampilan ruangan A di sini
lcd.clear();
} else {
keyinput = "";
Serial.print("Ruangan Tidak Ditemukan.");
}
}
}
}