#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR 0x27      // I2C address for the LCD
#define SDA_PIN 21          // SDA pin on ESP32
#define SCL_PIN 22          // SCL pin on ESP32
#define BUTTON_SQUARE 18     // Digital pin for square button
#define BUTTON_CIRCLE 2     // Digital pin for circle button
#define BUTTON_PENTAGON 15   // Digital pin for pentagon button
#define BUTTON_HEXAGON 27    // Digital pin for hexagon button
#define BUTTON_STAR 13       // Digital pin for star button
#define BUTTON_TRIANGLE 12   // Digital pin for triangle button

LiquidCrystal_I2C lcd(I2C_ADDR, 16, 2);

int pressCountSquare = 0;
int pressCountCircle = 0;
int pressCountPentagon = 0;
int pressCountHexagon = 0;
int pressCountStar = 0;
int pressCountTriangle = 0;

void setup() {
  Serial.begin(115200);

  lcd.init();       // Initialize LCD
  lcd.backlight();  // Turn on the backlight
  lcd.setCursor(0, 0);
  lcd.print("Press Counts:");

  pinMode(BUTTON_SQUARE, INPUT_PULLUP);
  pinMode(BUTTON_CIRCLE, INPUT_PULLUP);
  pinMode(BUTTON_PENTAGON, INPUT_PULLUP);
  pinMode(BUTTON_HEXAGON, INPUT_PULLUP);
  pinMode(BUTTON_STAR, INPUT_PULLUP);
  pinMode(BUTTON_TRIANGLE, INPUT_PULLUP);
}

void loop() {
  if (digitalRead(BUTTON_SQUARE) == LOW) {
    displayShape("Square", ++pressCountSquare);
    delay(500); // Debouncing delay
  }
  if (digitalRead(BUTTON_CIRCLE) == LOW) {
    displayShape("Circle", ++pressCountCircle);
    delay(500);
  }
  if (digitalRead(BUTTON_PENTAGON) == LOW) {
    displayShape("Pentagon", ++pressCountPentagon);
    delay(500);
  }
  if (digitalRead(BUTTON_HEXAGON) == LOW) {
    displayShape("Hexagon", ++pressCountHexagon);
    delay(500);
  }
  if (digitalRead(BUTTON_STAR) == LOW) {
    displayShape("Star", ++pressCountStar);
    delay(500);
  }
  if (digitalRead(BUTTON_TRIANGLE) == LOW) {
    displayShape("Triangle", ++pressCountTriangle);
    delay(500);
  }
}

void displayShape(const char *shape, int count) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(shape);
  lcd.setCursor(0, 1);
  lcd.print("Count: ");
  lcd.print(count);
}
Loading
esp32-devkit-c-v4
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
btn3:1.l
btn3:2.l
btn3:1.r
btn3:2.r
btn4:1.l
btn4:2.l
btn4:1.r
btn4:2.r
btn5:1.l
btn5:2.l
btn5:1.r
btn5:2.r
btn6:1.l
btn6:2.l
btn6:1.r
btn6:2.r