#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int resetButtonPin = 2;
const int countButtonPin = 3;
const int eepromAddress = 0;
int count = 0;
unsigned long lastSaveTime = 0;
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Count: ");
count = EEPROM.read(eepromAddress);
lcd.setCursor(7, 0);
lcd.print(count);
pinMode(resetButtonPin, INPUT_PULLUP);
pinMode(countButtonPin, INPUT_PULLUP);
}
void loop() {
static bool buttonPressed = false;
static unsigned long lastButtonPressedTime = 0;
if (digitalRead(countButtonPin) == LOW && !buttonPressed) {
buttonPressed = true;
lastButtonPressedTime = millis();
} else if (digitalRead(countButtonPin) == HIGH && buttonPressed && millis() - lastButtonPressedTime >= 20) {
buttonPressed = false;
count++;
updateDisplay();
}
if (digitalRead(resetButtonPin) == LOW) {
count = 0;
updateDisplay();
delay(200);
}
if (millis() - lastSaveTime >= 10000) {
EEPROM.write(eepromAddress, count);
lastSaveTime = millis();
}
}
void updateDisplay() {
lcd.setCursor(7, 0);
lcd.print(" ");
lcd.setCursor(7, 0);
lcd.print(count);
}