#include <Arduino.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int schetchik = 0;
int schetchik2 = 0;
bool enc_A=true;
bool enc_B=true;
bool enc_C=true;
bool enc_D=true;
void setup() {
lcd.begin(16, 2);
lcd.backlight(); //подсветка
pinMode(11, INPUT);
pinMode(12, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
}
void loop() {
// Для первого энкодера
static bool enc_prev = enc_A; // Сохраняем текущее состояние энкодера A
if ((!enc_A) && (enc_prev)) {
if (enc_B) {
if (schetchik + 1 > 0)
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 > 0)
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
}
}