#include <LiquidCrystal_I2C.h>        // библиотека для дисплея
LiquidCrystal_I2C LCD(0x27, 16, 2);   // присваиваем имя дисплею

//#define encoder_CLK 2                 // пин 2 подключаем к CLK энкодера
//#define encoder_DT  3                 // пин 3 подключаем к DT энкодера
//#define encoder_SW  4                 // пин 11 подключаем к SW энкодера

#define buttonPin 11              
#define Green_LED_pin 2            
#define Red_lED_pin 7             

boolean Green_LED  = false;        
boolean Red_lED  = false;          

boolean button  = false;           
boolean press_flag = false;        
boolean long_press_flag = false;   
unsigned long last_press = 0;      

void setup() {
  pinMode(buttonPin, INPUT_PULLUP);       
  pinMode(Green_LED_pin, OUTPUT);  
  pinMode(Red_lED_pin, OUTPUT);   
}

void loop() {

  digitalWrite(Green_LED_pin, Green_LED); // Вкл./Выкл. зеленый диод
  digitalWrite(Red_lED_pin, Red_lED);     // Вкл./Выкл. красный диод

  button = digitalRead(buttonPin);  // считывает текущее состояние кнопки

  if (button == LOW  && press_flag == false && millis() - last_press > 100) {
    // если кнопка была нажата и не была нажата до этого (флажок короткого нажатия = false)
    // и с последненго нажатия прошло более 100 миллисекунд (защита
    // от дребезга контактов) то...
    press_flag = !press_flag;       //...поднять флажок короткого нажатия на кнопку и
    last_press = millis();          // присвоить текущее время переменной last_press
  }

  if (button == LOW && press_flag == true && millis() - last_press > 1000) {
    // если кнопку продолжают нажимать более 1 секунды, то...
    long_press_flag = !long_press_flag;  // ...поднять флажок долгого нажатия и
    last_press = millis();          // присвоить текущее время переменной last_press
    // Сюда вписываем события неоходимые при длительном нажатии на кнопку
    Red_lED = !Red_lED; // например меняем состояние красного диода
  }

  if (button == HIGH && press_flag == true && long_press_flag == true) {
    // если кнопка отпушена и была нажата длительное время, то...
    press_flag = !press_flag;            // опустить флажок короткого нажатия
    long_press_flag = !long_press_flag;  // и длинного нажатия
  }

  if (button == HIGH && press_flag == true && long_press_flag == false) {
    // если кнопка отпущена и было только короткое нажатие, то...
    press_flag = !press_flag;  // опустить флажок короткого нажатия
    // сюда вписываем события неоходимые при коротком нажатии на кнопку
    Green_LED = !Green_LED; // например меняем состояние зеленого диода
  }
}