How do you plan to solve it?
 
 
/*Paste your code here*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BUTTON_PIN     7
#define LONG_PRESS_MS 1000
#define DOUBLE_CLICK_MS 400
#define RESET_DELAY   2000
#define DEBOUNCE_MS     50
LiquidCrystal_I2C lcd(0x27, 16, 2);
void showWaiting() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Waiting for");
  lcd.setCursor(0, 1);
  lcd.print("button press...");
}
void showMessage(const char* line1, const char* line2) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(line1);
  lcd.setCursor(0, 1);
  lcd.print(line2);
  delay(RESET_DELAY);
  showWaiting();
}
void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  lcd.init();
  lcd.backlight();
  showWaiting();
}
void loop() {
  if (digitalRead(BUTTON_PIN) == LOW) {
    delay(DEBOUNCE_MS);
    if (digitalRead(BUTTON_PIN) != LOW) return;
    unsigned long pressStart = millis();
    bool longDetected = false;
    while (digitalRead(BUTTON_PIN) == LOW) {
      if (!longDetected && (millis() - pressStart >= LONG_PRESS_MS)) {
        showMessage("Long Press", "Detected");
        longDetected = true;
      }
      delay(10);
    }
    if (longDetected) {
      delay(200);
      return;
    }
    delay(DEBOUNCE_MS);
    unsigned long waitStart = millis();
    bool secondPressed = false;
    while (millis() - waitStart < DOUBLE_CLICK_MS) {
      if (digitalRead(BUTTON_PIN) == LOW) {
        delay(DEBOUNCE_MS);
        if (digitalRead(BUTTON_PIN) == LOW) {
          while (digitalRead(BUTTON_PIN) == LOW) delay(10);
          secondPressed = true;
        }
        break;
      }
      delay(10);
    }
    if (secondPressed) {
      showMessage("Double Click", "Detected");
    } else {
      showMessage("Single Click", "Detected");
    }
    delay(200);
  }
}
Add a video of the output (know more)
