#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int schetchik = 0;
int schetchik2 = 0;
void setup() {
//По дефолту все пины конфигурируются как входы, и
//при наличии внешних резисторов подтяжки всё, что ниже, можно не указывать
  pinMode(11, INPUT);
  pinMode(12, INPUT);
  pinMode(9, INPUT);
  pinMode(10, INPUT);
  pinMode(7, INPUT);
  pinMode(8, INPUT);
}
void loop() {
  bool enc_A = digitalRead(11);
  bool enc_B = digitalRead(12);
  bool enc_C = digitalRead(9);
  bool enc_D = digitalRead(10);
  // Для первого энкодера
  static bool enc_prev = enc_A;  // Сохраняем текущее состояние энкодера A
  if ( (!enc_A) && (enc_prev) ) {
    if (enc_B) {
      if (schetchik + 1)
        schetchik += 1;
    } else {
      if (schetchik - 1 >= 0)
        schetchik -= 1;
    }
  }
  enc_prev = enc_A;  // Обновляем сохраненное состояние энкодера A
  float m = schetchik / 1.00;
  lcd.setCursor(10, 1);
  lcd.print(m);
  // Для второго энкодера
  static bool enc_prev2 = enc_C;  // Сохраняем текущее состояние энкодера C
  if ( (!enc_C) && (enc_prev2) ) {
    if (enc_D) {
      if (schetchik2 + 1)
        schetchik2 += 1;
    } else {
      if (schetchik2 - 1 >= 0)
        schetchik2 -= 1;
    }
  }
  enc_prev2 = enc_C;  // Обновляем сохраненное состояние энкодера C
  float m2 = schetchik2 / 1.00;
  lcd.setCursor(10, 0);
  lcd.print(m2);
  if (!digitalRead(7)) {
    schetchik = 0;  // Сброс счетчика schetchik при активации пина 7
  }
  if (!digitalRead(8)) {
    schetchik2 = 0;  // Сброс счетчика schetchik2 при активации пина 8
  }
}