#include <dummy.h>
#include <Wire.h>
#include <Adafruit_Fingerprint.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi objek fingerprint
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&Serial2);
// Inisialisasi objek LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C dan ukuran LCD (sesuaikan dengan LCD yang digunakan)
uint8_t id;
void setup() {
Serial.begin(9600);
while (!Serial);
// Inisialisasi fingerprint
finger.begin(57600);
if (finger.verifyPassword()) {
Serial.println("Sensor sidik jari ditemukan!");
} else {
Serial.println("Sensor sidik jari tidak ditemukan :(");
while (1) { delay(1); }
}
// Inisialisasi LCD
lcd.init();
lcd.backlight();
lcd.clear();
lcd.print("Sidik Jari LCD");
Serial.println(F("Membaca parameter sensor"));
finger.getParameters();
Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX);
Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX);
Serial.print(F("Kapasitas: ")); Serial.println(finger.capacity);
Serial.print(F("Tingkat keamanan: ")); Serial.println(finger.security_level);
Serial.print(F("Alamat perangkat: ")); Serial.println(finger.device_addr, HEX);
Serial.print(F("Panjang paket: ")); Serial.println(finger.packet_len);
Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate);
}
void loop() {
lcd.setCursor(0, 1);
lcd.print("Tempelkan sidik jari...");
// Mendapatkan ID sidik jari
id = getFingerprintID();
lcd.clear();
lcd.setCursor(0, 0);
if (id != 255) {
lcd.print("ID: ");
lcd.print(id);
lcd.setCursor(0, 1);
lcd.print("Akses Diterima");
delay(2000);
} else {
lcd.print("Akses Ditolak");
delay(2000);
}
}
uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Gambar diambil");
break;
case FINGERPRINT_NOFINGER:
Serial.println("Tidak ada jari terdeteksi");
return 255; // Nilai 255 digunakan untuk menunjukkan ketika tidak ada sidik jari yang terdeteksi
default:
Serial.println("Error tidak diketahui");
return 255;
}
// OK berhasil!
p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Gambar dikonversi");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Gambar terlalu kacau");
return 255;
default:
Serial.println("Error tidak diketahui");
return 255;
}
// OK dikonversi!
p = finger.fingerSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Jari terdeteksi!");
Serial.print("ID #"); Serial.print(finger.fingerID);
Serial.print(" dengan tingkat kepercayaan "); Serial.println(finger.confidence);
return finger.fingerID;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Tidak menemukan cocokan");
return 255;
} else {
Serial.println("Error tidak diketahui");
return 255;
}
}