#define BLYNK_TEMPLATE_ID "TMPL6N1ojcN5y"
#define BLYNK_TEMPLATE_NAME "LATIHAN FSP DEC24"
#define BLYNK_AUTH_TOKEN "6Qi1RmAJbUI_HY0gE3mf90T7EgzO9L35"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Keypad.h>
#include <DHT.h>
#define DHTTYPE DHT22
const int dhtPin = 16;
DHT dht(dhtPin, DHTTYPE);
const int benar = 14;
const int salah = 12;
const int relay1 = 26;
const int relay2 = 27;
const int BARIS = 4;
const int KOLOM = 4;
char keys[BARIS][KOLOM] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[BARIS] = {22, 21, 19, 18};
byte colPins[KOLOM] = {5, 4, 2, 15};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, BARIS, KOLOM);
// Blynk
char auth[] = "6Qi1RmAJbUI_HY0gE3mf90T7EgzO9L35";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Variabel
String kalimat = "";
String Kode = "240524";
int SWITCH1;
int SWITCH2;
void setup() {
Serial.begin(9600);
pinMode(benar, OUTPUT);
pinMode(salah, OUTPUT);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
Blynk.begin(auth, ssid, pass);
dht.begin();
}
void loop() {
Blynk.run();
char key = keypad.getKey();
if (key) {
Serial.print("Input Code: ");
Serial.println(key);
if (key == '*') {
kalimat = "";
} else if (key == '#') {
if (kalimat == Kode) {
Serial.println("Code Benar Selamat!!!");
digitalWrite(benar, HIGH);
digitalWrite(relay1, HIGH);
Blynk.logEvent("OPEN", "ACCESS GRANTED");
delay(5000);
digitalWrite(benar, LOW);
digitalWrite(relay1, LOW);
} else {
Serial.println("Coba lagi!");
digitalWrite(salah, HIGH);
digitalWrite(relay2, HIGH);
Blynk.logEvent("FAIL", "ACCESS DENIED");
delay(5000);
digitalWrite(salah, LOW);
digitalWrite(relay2, LOW);
}
kalimat = "";
} else {
kalimat += key;
}
Serial.print("KODE: ");
Serial.println(kalimat);
}
float suhu = dht.readTemperature();
float kelembaban = dht.readHumidity();
if (isnan(suhu) || isnan(kelembaban)) {
Serial.println("Gagal membaca dari sensor DHT!");
return;
}
Blynk.virtualWrite(V2, suhu);
Blynk.virtualWrite(V3, kelembaban);
}
BLYNK_WRITE(V0) {
SWITCH1 = param.asInt();
digitalWrite(relay1, SWITCH1);
}
BLYNK_WRITE(V1) {
SWITCH2 = param.asInt();
digitalWrite(relay2, SWITCH2);
}