#include <Arduino.h>
#define BUZZER_PIN 14 // GPIO pin for Buzzer
#define GREEN_LED 26 // GPIO pin for Green LED
#define RED_LED 25 // GPIO pin for Red LED
#define RELAY_PIN 27 // GPIO pin for Relay
void setup() {
Serial.begin(115200); // Initialize serial communications
pinMode(BUZZER_PIN, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
pinMode(RELAY_PIN, OUTPUT);
// Initial state: turn off buzzer, LEDs, and relay
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(RED_LED, LOW);
digitalWrite(RELAY_PIN, LOW);
Serial.println("Enter e-KTP ID (format: XX XX XX XX):");
}
void loop() {
if (Serial.available()) {
String input = Serial.readStringUntil('\n');
input.trim(); // Remove any leading or trailing whitespace
if (isValidFormat(input)) {
// Check if the entered ID matches the expected ID
if (input.equals("12 34 56 78")) { // Replace with your registered e-KTP ID
accessGranted();
} else {
accessDenied();
}
} else {
Serial.println("Invalid format. Enter e-KTP ID (format: XX XX XX XX):");
}
}
}
bool isValidFormat(String input) {
// Check if the input matches the format "XX XX XX XX"
if (input.length() == 11 && input.charAt(2) == ' ' && input.charAt(5) == ' ' && input.charAt(8) == ' ') {
for (int i = 0; i < input.length(); i++) {
if (i != 2 && i != 5 && i != 8) {
if (!isDigit(input.charAt(i))) {
return false;
}
}
}
return true;
}
return false;
}
void accessGranted() {
Serial.println("Access granted!");
digitalWrite(BUZZER_PIN, HIGH);
digitalWrite(GREEN_LED, HIGH);
digitalWrite(RELAY_PIN, HIGH);
delay(5000); // Buzzer and LED on for 5 seconds
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(RELAY_PIN, LOW);
}
void accessDenied() {
Serial.println("Access denied!");
digitalWrite(BUZZER_PIN, HIGH);
digitalWrite(RED_LED, HIGH);
delay(5000); // Buzzer and LED on for 5 seconds
digitalWrite(BUZZER_PIN, LOW);
digitalWrite(RED_LED, LOW);
}