Error compiling my code

I am attaching my code, can anybody let me why i am getting a compiling error
(In file included from C:\Users\harsh\Downloads\Fingerprint---Hex-Keypad-based-door-lock-system-master\Fingerprint---Hex-Keypad-based-door-lock-system-master\Fingrprint___Hex_keypad_based_door_lock_system\enrol.h:2,
from C:\Users\harsh\Downloads\Fingerprint---Hex-Keypad-based-door-lock-system-master\Fingerprint---Hex-Keypad-based-door-lock-system-master\Fingrprint___Hex_keypad_based_door_lock_system\Fingrprint___Hex_keypad_based_door_lock_system.ino:1:
c:\Users\harsh\OneDrive\Documents\Arduino\libraries\Adafruit_GFX_Library/Adafruit_GFX.h:12:10: fatal error: Adafruit_I2CDevice.h: No such file or directory
#include <Adafruit_I2CDevice.h>
^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

exit status 1

Compilation error: exit status 1)

The code
#include "enrol.h"
#include "fingerprint.h"

// Icon of Fingerprint
#define LOGO_HEIGHT 64
#define LOGO_WIDTH 128
static const unsigned char PROGMEM logo_bmp[] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0x83, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x03, 0xff, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xff, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0xff, 0xff, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xe1, 0xff, 0x00, 0xff, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xc7, 0xf0, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x8f, 0xc0, 0x00, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x03, 0xff, 0xc1, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x0f, 0xff, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x3f, 0xff, 0xfc, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x00, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xf8, 0x00, 0x1f, 0x8f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xe3, 0xf0, 0x18, 0x0f, 0xc7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xc7, 0xc1, 0xff, 0x83, 0xe3, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xc7, 0x87, 0xff, 0xe1, 0xf1, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x8f, 0x1f, 0xff, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x1e, 0x3f, 0x01, 0xf8, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x1e, 0x7e, 0x00, 0x7c, 0x79, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x00, 0x3e, 0x3d, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xf0, 0xff, 0x1f, 0x3d, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xe1, 0xff, 0x8f, 0x1c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xe3, 0xff, 0xc7, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xe3, 0xc7, 0xc3, 0xc7, 0x9e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0xe3, 0x8f, 0x01, 0xe7, 0x9e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0xc7, 0x8f, 0x00, 0xe3, 0x9e, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x8f, 0x9e, 0x18, 0xf3, 0x9e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x1e, 0x38, 0xf3, 0x9e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x3c, 0x38, 0xf3, 0x9e, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x78, 0xf7, 0x9c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x78, 0x78, 0xe7, 0x9c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0xf0, 0xf1, 0xe7, 0x9c, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xe1, 0xf1, 0xe1, 0xe7, 0x3c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0xc3, 0xe3, 0xe3, 0xc7, 0x3c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x87, 0xc3, 0xc3, 0xcf, 0x3c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x87, 0x87, 0x8f, 0x3c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x8f, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x1f, 0x1f, 0x0f, 0x3c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3e, 0x1e, 0x0f, 0x3d, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x7c, 0x3c, 0xcf, 0x3c, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0xf8, 0x79, 0xcf, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0xc1, 0xf0, 0xf9, 0xcf, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x07, 0xe1, 0xf1, 0xc7, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0xc3, 0xe3, 0xc7, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x07, 0xc3, 0xc7, 0x87, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x1f, 0x83, 0xc3, 0xc3, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3e, 0x01, 0xc3, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x7c, 0x01, 0xc1, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0xf8, 0x01, 0xe0, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xf3, 0xf8, 0xf0, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe7, 0xfc, 0xf8, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xcf, 0xfe, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1f, 0x1e, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x3e, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

void setup()
{
// put your setup code here, to run once:

pinMode(Relay, OUTPUT);
digitalWrite(buzzer, LOW);

// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for (;;); // Don't proceed, loop forever
}

initWifi();

digitalWrite(buzzer, LOW);

}

void loop() {
// put your main code here, to run repeatedly:

char customKey = customKeypad.getKey();

if (customKey)
{
Serial.println(customKey);

// Maze Lock Mode
if (customKey == 'A')
{
  Serial.println("A");
  Serial.println("Maze Lock Mode");
  display.clearDisplay();
  display.setTextSize(2);             // Normal 1:1 pixel scale
  display.setTextColor(SSD1306_WHITE);        // Draw white text
  display.setCursor(10, 0);            // Start at top-left corner
  display.println(("Maze Lock"));
  display.setCursor(35, 30);
  display.println(("Mode"));
  display.display();
  beep(200);
  beep(200);
  delay(1000);

  Serial.println("Enter the \nFour Digit \nCode");

  fingerprint_flag = 0;
}

// Enrollment Mode
if (customKey == 'C')
{
  beep(200);
  if (Keypad_Input() == Secret_Code)
  {
    Serial.println("D");
    Serial.println("Enrollment mode");
    display.clearDisplay();
    display.setTextSize(2);             // Normal 1:1 pixel scale
    display.setTextColor(SSD1306_WHITE);        // Draw white text
    display.setCursor(0, 0);            // Start at top-left corner
    display.println(("Enrollment"));
    display.setCursor(35, 30);
    display.println(("Mode"));
    display.display();
    beep(200);
    beep(200);
    delay(1000);
    Serial.println("Enter ID");
    display.clearDisplay();
    display.setTextSize(2);             // Normal 1:1 pixel scale
    display.setTextColor(SSD1306_WHITE);        // Draw white text
    display.setCursor(35, 20);            // Start at top-left corner
    display.println(("ID XXX"));
    display.display();
    ID_e = "";
    i = 0;
    fingerprint_flag = 2;
    setup_e();
    loop_e();
    fingerprint_flag = 1;
  }
  else
  {
    Serial.println("Wrong Code");
    display.clearDisplay();
    display.setTextSize(2);             // Normal 1:1 pixel scale
    display.setTextColor(SSD1306_WHITE);        // Draw white text
    display.setCursor(0, 20);            // Start at top-left corner
    display.println(("Wrong Code"));
    display.display();
    beep(200);
    beep(200);
    delay(1000);
  }
}

}

if (fingerprint_flag == 1)
{
finger.fingerID = 0;
delay(50);
setup_f();
loop_f();
display.clearDisplay();
display.drawBitmap(0, 0, logo_bmp, LOGO_WIDTH, LOGO_HEIGHT, 1);
display.display();
customKey = customKeypad.getKey();
switch (customKey) {
case 'C':
break;
case 'A':
break;
}
break;
delay(1000);
}

if (fingerprint_flag == 0)
{
if (Keypad_Input() == Secret_Code)
{
Serial.println("Correct Code");
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(0, 20); // Start at top-left corner
display.println(("Correct Code"));
beep(1000);
display.display();
Door_control();
ID = 200;
makeIFTTTRequest();

  delay(1000);

  fingerprint_flag = 1;
}
else
{
  Serial.println("Wrong Code");
  display.clearDisplay();
  display.setTextSize(2);             // Normal 1:1 pixel scale
  display.setTextColor(SSD1306_WHITE);        // Draw white text
  display.setCursor(0, 20);            // Start at top-left corner
  display.println(("Wrong Code"));
  display.display();
  beep(200);
  beep(200);
  delay(1000);
  display.clearDisplay();
  display.setTextSize(2);             // Normal 1:1 pixel scale
  display.setTextColor(SSD1306_WHITE);        // Draw white text
  display.setCursor(35, 20);            // Start at top-left corner
  display.println(("Code"));
  display.display();
}
ID_e = "";

}
}

// Establish a Wi-Fi connection with your router
void initWifi()
{
Serial.print("Connecting to: ");
Serial.print(ssid);
display.clearDisplay();

display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(0, 0); // Start at top-left corner
display.println(("Connecting"));
display.setCursor(0, 50);
display.println((ssid));
display.display();
delay(2000);
WiFi.begin(ssid, password);

int timeout = 10 * 4; // 10 seconds
while (WiFi.status() != WL_CONNECTED && (timeout-- > 0)) {
delay(250);
Serial.print(".");
}
Serial.println("");

if (WiFi.status() != WL_CONNECTED) {
Serial.println("Failed to connect, going back to sleep");
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(0, 30); // Start at top-left corner
display.println(("Not \nConnected"));
display.display();
}
else
{
Serial.print("WiFi connected in: ");
Serial.print(millis());
Serial.print(", IP address: ");
Serial.println(WiFi.localIP());
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(0, 30); // Start at top-left corner
display.println(("Connected"));
display.display();
}
delay(2000);
}

Enrol.h Code.
#include <Adafruit_Fingerprint.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Keypad.h>
#include <HardwareSerial.h>
#include <WiFi.h>
#include <Wire.h>

//Keypad Configurations
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {13, 12, 14, 27}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {26, 25, 33, 32}; //connect to the column pinouts of the keypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void beep(int duration);

//Display Configurations
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

String ID_e;
char customKey;
int value;
bool done_flag = 0;
unsigned int id;
int fingerprint_flag = 1;
//initialize an instance of class NewKeypad

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&Serial2);

unsigned int getFingerprintEnroll();
unsigned int readnumber(void);
unsigned int getFingerprintID();
int Keypad_Input(void);
void state(void);

void setup_e()
{
Serial.begin(57600);
Serial2.begin(115200);
while (!Serial);
delay(100);
Serial.println("\n\nAdafruit Fingerprint sensor enrollment");

// set the data rate for the sensor Serial port
finger.begin(57600);

if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");
int i;
while (i < 7) {
delay(10);
Serial.print(".!E!.");
i++;
}
}
}

void loop_e() // run over and over again
{
Serial.println("Ready to enroll a fingerprint!");
Serial.println("Please type in the ID # (from 1 to 127) you want to save this finger as...");
id = readnumber();
if (id == 0) {// ID #0 not allowed, try again!
return;
}
Serial.print("Enrolling ID #");
// Serial.println(id);

while (1) {
getFingerprintEnroll();
break;
}
}

unsigned int readnumber()
{
Serial.println("Reading Number");
int i = 0;
ID_e = "";
value = 0;
while (1)
{
customKey = customKeypad.getKey();

if (customKey && i < 3)
{
  ID_e = ID_e + customKey;
  value = ID_e.toInt();
  Serial.println(value);
  display.setTextSize(2);             // Normal 1:1 pixel scale
  display.setTextColor(SSD1306_WHITE);        // Draw white text
  display.setCursor(50, 50);            // Start at top-left corner
  display.println(value);
  display.display();

  beep(100);
  i++;
}
if (customKey == '#')
{
  beep(100);
  return (value);
}
if (customKey == 'B')
{
  fingerprint_flag = 1;
  ID_e = "";
  i = 0;
  beep(100);
  return (value);
}

}
}

unsigned int getFingerprintEnroll()
{

int p = -1;
Serial.print("Waiting for valid finger to enroll as #");
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(20, 20); // Start at top-left corner
display.println(("Place"));
display.setCursor(15, 40); // Start at top-left corner
display.println(("Finger"));
display.display();
Serial.println(id);
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
Serial.println(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
break;
default:
Serial.println("Unknown error");
break;
}
}

// OK success!

p = finger.image2Tz(1);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}

Serial.println("Remove finger");
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(18, 20); // Start at top-left corner
display.println(("Remove"));
display.setCursor(15, 40); // Start at top-left corner
display.println(("Finger"));
display.display();
delay(2000);
p = 0;
while (p != FINGERPRINT_NOFINGER) {
p = finger.getImage();
}
Serial.print("ID "); Serial.println(id);
p = -1;
Serial.println("Place same finger again");
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(30, 0); // Start at top-left corner
display.println(("Place \n same \n Finger"));
display.display();
while (p != FINGERPRINT_OK) {
p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");
break;
case FINGERPRINT_NOFINGER:
Serial.print(".");
break;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
break;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
break;
default:
Serial.println("Unknown error");
break;
}
}

// OK success!

p = finger.image2Tz(2);
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}

// OK converted!
Serial.print("Creating model for #");

Serial.println(id);

p = finger.createModel();
if (p == FINGERPRINT_OK) {
Serial.println("Prints matched!");
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(15, 20); // Start at top-left corner
display.println(("Prints \nmatched"));
display.display();
beep(2000);
//delay(1000);
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_ENROLLMISMATCH) {
Serial.println("Fingerprints did not match");
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(15, 0); // Start at top-left corner
display.println((" Prints \n did not \n matched"));
display.display();
beep(200);
beep(200);
delay(500);
return p;
} else {
Serial.println("Unknown error");
return p;
}

Serial.print("ID "); Serial.println(id);
p = finger.storeModel(id);
if (p == FINGERPRINT_OK) {
Serial.println("Stored!");
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(0, 0); // Start at top-left corner
display.println((" Print \n stored to ID "));
display.println((id));
display.display();
delay(1000);
// return;
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_BADLOCATION) {
Serial.println("Could not store in that location");
return p;
} else if (p == FINGERPRINT_FLASHERR) {
Serial.println("Error writing to flash");
return p;
} else {
Serial.println("Unknown error");
return p;
}

}

int Keypad_Input(void)
{
int i = 0;
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(30, 0); // Start at top-left corner
display.println(("Enter"));
display.setCursor(35, 20); // Start at top-left corner
display.println(("Code"));
display.display();
i = 0;
ID_e = "";
value = 0;
while (1)
{
customKey = customKeypad.getKey();

if (customKey && i < 4)
{
  ID_e = ID_e + customKey;
  value = ID_e.toInt();
  Serial.println(value);
  display.setTextSize(2);             // Normal 1:1 pixel scale
  display.setTextColor(SSD1306_WHITE);        // Draw white text
  display.setCursor(i * 35, 50);            // Start at top-left corner
  display.println(("*"));
  display.display();
  beep(100);
  i++;
}
if (customKey == '#')
{
  done_flag = 1;
  Serial.println("DONE");
  i = 0;
  ID_e = "";
  return (value);
}
if (customKey == 'B')
{
  fingerprint_flag = 1;
  ID_e = "";
  return (0);
}

}
}

Fingerprint.h code

// Replace with your SSID and Password
const char* ssid = "SSID";
const char* password = "PASS";

// Necesarry Variables to make Attendance Sheet
String Event_name = "fingerprint";
String Webhooks_key = "YOUR_WEBHOOKS_KEY";

//The Secret Code
int Secret_Code = 1234;

// Pin Definition
int buzzer = 15;
int Relay = 23;

//Misc. Variables
int i = 0;
int k = 0;
bool wrong_code = 1;
uint8_t new_ID = 0;
String NAME = "";
String ID = "";
char* response = " ";
String res = "";
char* succ_code = "200 OK";
unsigned int p;

// Maker Webhooks IFTTT
String resource = "/trigger/" + Event_name + "/with/key/" + Webhooks_key;
const char* server = "maker.ifttt.com";

unsigned int getFingerprintEnroll();
unsigned int readnumber();
unsigned int getFingerprintID();

void beep(int duration);
void Door_control();
unsigned int getFingerprintEnroll();
unsigned int readnumber();
unsigned int getFingerprintID();
int getFingerprintIDez();

void setup_f()
{
Serial.begin(57600);
pinMode(buzzer, OUTPUT);
while (!Serial);
delay(100);
Serial.println("\n\nAdafruit finger detect test");

// set the data rate for the sensor serial port
finger.begin(57600);
delay(5);
if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");
int i;
while (i < 7) {
delay(10);
Serial.print(".!F!.");
i++;
}
}

finger.getTemplateCount();
Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
Serial.println("Waiting for valid finger...");
// display.clearDisplay();
// display.setTextSize(2); // Normal 1:1 pixel scale
// display.setTextColor(SSD1306_WHITE); // Draw white text
// display.setCursor(0, 0); // Start at top-left corner
// display.println(("Waiting \nfor \nvalid \nfinger..."));
// display.display();
// delay(500);
}

void loop_f() // run over and over again
{
getFingerprintID();
delay(50); //don't ned to run this at full speed.
}

// Make an HTTP request to the IFTTT web service
void makeIFTTTRequest()
{
Serial.print("Connecting to ");
Serial.print(server);

WiFiClient client;
int retries = 5;
while (!!!client.connect(server, 80) && (retries-- > 0)) {
Serial.print(".");
}
Serial.println();
if (!!!client.connected()) {
Serial.println("Failed to connect...");
}

Serial.print("Request resource: ");
Serial.println(resource);

// Temperature in Celsius
String jsonObject = String("{"value1":"") + ID + ""}";
client.println(String("POST ") + resource + " HTTP/1.1");
client.println(String("Host: ") + server);
client.println("Connection: close\r\nContent-Type: application/json");
client.print("Content-Length: ");
client.println(jsonObject.length());
client.println();
client.println(jsonObject);

int timeout = 3 * 10; // 5 seconds
while (!!!client.available() && (timeout-- > 0)) {
delay(100);
}
if (!!!client.available()) {
Serial.println("No response...");
}
while (client.available())
{
// Serial.write(client.read());
char add = client.read();
res = res + add;
}
response = &res[0];
Serial.println("=======");
Serial.println(response);
if (strstr(response, succ_code))
{
Serial.println("Registered");
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(0, 30); // Start at top-left corner
display.println(("Registered"));
display.display();
delay(1000);
}
else
{
Serial.println("Not Registered");
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(30, 10); // Start at top-left corner
display.println(("Not"));
display.setCursor(0, 30); // Start at top-left corner
display.println(("Registered"));
display.display();
delay(1000);
}
response = "";
res = "";
Serial.println("\nclosing connection");

client.stop();
}

// returns -1 if failed, otherwise returns ID #
unsigned int getFingerprintID()
{
unsigned int p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image taken");

  break;
case FINGERPRINT_NOFINGER:
  Serial.println("No finger detected");

  return p;
case FINGERPRINT_PACKETRECIEVEERR:
  Serial.println("Communication error");
  display.clearDisplay();
  display.setTextSize(2);             // Normal 1:1 pixel scale
  display.setTextColor(SSD1306_WHITE);        // Draw white text
  display.setCursor(0, 0);            // Start at top-left corner
  display.println(("Commun \nerror"));
  display.display();
  beep(200);
  beep(200);
  beep(200);
  delay(200);
  return p;
case FINGERPRINT_IMAGEFAIL:
  Serial.println("Imaging error");
  return p;
default:
  Serial.println("Unknown error");
  return p;

}

// OK success!

p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
return p;
case FINGERPRINT_FEATUREFAIL:
Serial.println("Could not find fingerprint features");
return p;
case FINGERPRINT_INVALIDIMAGE:
Serial.println("Could not find fingerprint features");
return p;
default:
Serial.println("Unknown error");
return p;
}

p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Found a print match!");
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(0, 0); // Start at top-left corner
display.println(("Finger \nMatched !"));
display.display();
beep(1000);
//delay(1000);
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Did not find a match");
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(0, 0); // Start at top-left corner
display.println(("Did not \nfind a \nmatch"));
display.display();
beep(200);
beep(200);
delay(500);
return p;
} else {
Serial.println("Unknown error");
return p;
}

// found a match!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(50, 25); // Start at top-left corner
display.println(("ID"));
display.setCursor(50, 40);
display.println((finger.fingerID));
display.display();
delay(500);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
if (finger.confidence > 40)
{
Door_control();
ID = finger.fingerID;
makeIFTTTRequest();
}
return finger.fingerID;
}
// returns -1 if failed, otherwise returns ID #
int getFingerprintIDez() {
uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK) return -1;

p = finger.image2Tz();
if (p != FINGERPRINT_OK) return -1;

p = finger.fingerFastSearch();
if (p != FINGERPRINT_OK) return -1;

// found a match!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);

return finger.fingerID;
}
void beep(int duration)
{
digitalWrite(buzzer, HIGH);
delay(duration);
digitalWrite(buzzer, LOW);
delay(30);
}

void Door_control()
{
digitalWrite(Relay, HIGH);
Serial.println("Opening the door");
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(0, 20); // Start at top-left corner
display.println(("Opening \nthe door"));
display.display();
delay(1000);
Serial.println("Closing the door");
display.clearDisplay();
display.setTextSize(2); // Normal 1:1 pixel scale
display.setTextColor(SSD1306_WHITE); // Draw white text
display.setCursor(0, 20); // Start at top-left corner
display.println(("Closing \nthe door"));
display.display();
delay(2000);
digitalWrite(Relay, LOW);
}

//}

By the way the code is for esp32 dev board
Please help me with it
Thank You

Please read the forum guidelines to see how to properly post code and some information on making a good post.

Use the IDE autoformat tool (ctrl-t or Tools, Auto format) before posting code in a code block.

Please go back and fix your original post.

So find and install that library.

Your code compiles. Check that you have the library files installed. Also verify your baraces (this -> { and this ->} match).

This is the result:

START /tmp/build-sslEoj/sketch/sketch.ino from Jul  1 2023

Using library version 4.1.0

IRremoteInfo - by AnalysIR (http://www.AnalysIR.com/)

- A helper sketch to assist in troubleshooting issues with the library by reviewing the settings within the IRremote library

- Prints out the important settings within the library, which can be configured to suit the many supported platforms

- When seeking on-line support, please post or upload the output of this sketch, where appropriate



IRremote Library Settings

=========================

RAW_BUFFER_LENGTH: 112

Timer Error: not defined

IR Send Pin: 0

MCU Clock: 16000000

MCU Platform: ATmega328(P) / (Duemilanove, Diecimila, LilyPad, Mini, Micro, Fio, Nano, etc)

Mark Excess: 20 uSecs

Microseconds per tick: 50 uSecs

Measurement tolerance: 25%

Minimum Gap between IR Signals: 5000 uSecs

Arduino IDE version: 1.6.7

Debug Mode: OFF (Normal)



IR PROTOCOLS  SEND     DECODE

============= ======== ========

RC5:          Enabled

RC6:          Enabled

NEC:          Enabled

SONY:         Enabled

PANASONIC:    Enabled

JVC:          Enabled

SAMSUNG:      Enabled

LG:           Enabled

DENON:        Enabled

BANG_OLUFSEN: Disabled

BOSEWAVE:     Enabled

WHYNTER:      Enabled

FAST:         Enabled



Notes: 

- Most of the settings above can be configured in the following files included as part of the library

- IRremoteInt.h

- IRremote.h

- You can save SRAM by disabling the Decode or Send features for any protocol (Near the top of IRremoteInt.h)

- Some Timer conflicts, with other libraries, can be easily resolved by configuring a different Timer for your platform

please check below git hub address, Is it a right Library?

@maijeong that is the right library, but you should install it using the Arduino IDE Library Manager. Just search for "Adafruit BusIO" and you'll find it.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.