#include <LiquidCrystal.h>
#include <Wire.h>
// #include "tone32.h"
class ESP32LCD {
public:
ESP32LCD(int button1, int button2, int button3, int button4, int buzzer, int lcdAddress,
int rs, int en, int d4, int d5, int d6, int d7)
: buttonPin1(button1), buttonPin2(button2), buttonPin3(button3), buttonPin4(button4),
BUZZER_PIN(buzzer), lcdAddr(lcdAddress), lcd(rs, en, d4, d5, d6, d7) {}
void setup() {
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
pinMode(buttonPin4, INPUT);
// lcd.init();
// lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("ESP32 LCD Demo");
}
void loop() {
if (digitalRead(buttonPin1) == HIGH) {
displayMessage("Button 1 pressed");
playBuzzer(1000);
}
if (digitalRead(buttonPin2) == HIGH) {
displayMessage("Button 2 pressed");
playBuzzer(1500);
}
if (digitalRead(buttonPin3) == HIGH) {
displayMessage("Button 3 pressed");
playBuzzer(2000);
}
if (digitalRead(buttonPin4) == HIGH) {
displayMessage("Button 4 pressed");
playBuzzer(2500);
}
}
private:
int buttonPin1, buttonPin2, buttonPin3, buttonPin4, BUZZER_PIN, lcdAddr;
LiquidCrystal lcd;
void displayMessage(const char *message) {
lcd.setCursor(0, 1);
lcd.print(message);
}
void playBuzzer(int frequency) {
tone(BUZZER_PIN, frequency, 100);
}
};
// Pin assignments
const int button1Pin = 13;
const int button2Pin = 12;
const int button3Pin = 26;
const int button4Pin = 27;
const int buzzerPin = 14;
const int lcdAddress = 0x27;
const int lcdRS = 19, lcdEN = 23, lcdD4 = 18, lcdD5 = 17, lcdD6 = 16, lcdD7 = 15;
ESP32LCD esp32LCD(button1Pin, button2Pin, button3Pin, button4Pin, buzzerPin, lcdAddress,
lcdRS, lcdEN, lcdD4, lcdD5, lcdD6, lcdD7);
void setup() {
esp32LCD.setup();
}
void loop() {
esp32LCD.loop();
}