TKK_E32221343/brankasq_arduino.ino

83 lines
1.8 KiB
C++

#include "logic_keypad.h"
#include "cek_kamera.h"
#define BUZZER 13
#define RELAY 3
void setup() {
pinMode(BUZZER, OUTPUT);
pinMode(RELAY, OUTPUT);
digitalWrite(RELAY, HIGH);
Serial.begin(9600);
lcd.init();
lcd.backlight();
if (!cekKoneksiKamera()) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Kamera Error");
lcd.setCursor(0, 1);
lcd.print("Periksa Sistem");
while (true);
}
checkLockoutFromEEPROM();
bool pinUpdated = false;
unsigned long startWait = millis();
const unsigned long timeout = 5000; // Tunggu 5 detik
while (millis() - startWait < timeout) {
if (Serial.available()) {
String command = Serial.readStringUntil('\n');
command.trim();
if (command == "resetpin") {
savePINToEEPROM("000000");
storedPIN = "000000";
isFirstTime = true;
lcd.clear();
centerText("Silakan Tambah", 0);
centerText("Wajah PIN di Web", 1);
soundUbahPIN();
pinUpdated = true;
break;
}
else if (command.startsWith("setpin:")) {
String newPIN = command.substring(7);
savePINToEEPROM(newPIN);
storedPIN = newPIN;
isFirstTime = false;
pinUpdated = true;
break;
}
}
}
// Jika tidak ada kiriman dari ESP32-CAM, cek EEPROM manual
if (!pinUpdated) {
checkEEPROMForPIN();
if (storedPIN == "000000") {
isFirstTime = true;
lcd.clear();
centerText("Silakan Tambah", 0);
centerText("Wajah PIN Website", 1);
soundUbahPIN();
}
}
// Jika sudah punya PIN valid, siap input
if (!isFirstTime) {
lcd.clear();
centerText("INPUT PIN", 0);
resetInput(); // siap mode input
}
}
void loop() {
handleSerialFromESP32();
handleKeypadLogic();
}