#define USE_BUTTON
#define USE_ENCODER
// эта часть отвечает за кнопки
#define BTN_L_PIN 3
#define BTN_R_PIN 9
#include "GyverButton.h"
GButton Btn_L(BTN_L_PIN, HIGH_PULL);
GButton Btn_R(BTN_R_PIN , HIGH_PULL);

// эта часть отвечает за поворот энкодера
#define CLK 4
#define DT 5
#include "GyverEncoder.h"
Encoder enc1(CLK, DT);

uint8_t per = 0;
uint8_t old_per = 1;

void setup() {
  Serial.begin(115200);
 
  // настройка энкодера
  enc1.setType(TYPE2);
 
  // настройка кнопок
  Btn_L.setStepTimeout(100);
  Btn_R.setStepTimeout(100);
}

void loop() {
  // изменение переменной энкодером
  enc1.tick();
  if (enc1.isRight()) per++;
  if (enc1.isLeft()) per--;


  // изменение переменной кнопками
  Btn_R.tick();
  Btn_L.tick();
  if (Btn_R.isClick() || Btn_R.isStep()) per++;
  if (Btn_L.isClick() || Btn_L.isStep()) per--;


  // общая для всех типпо изменения переменной обработка результатов
  if (old_per != per)
  {
    old_per = per;
    Serial.println(per);
  }
}