#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
const int led1Pin = 13;
const int led2Pin = 12;
const int button1Pin = 9;
const int button2Pin = 7;
const int buzzerPin = 8;
bool led1State = false;
bool led2State = false;
int lastButton1State = HIGH;
int lastButton2State = HIGH;
void setup() {
lcd.init();
lcd.backlight();
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
pinMode(button1Pin, INPUT_PULLUP);
pinMode(button2Pin, INPUT_PULLUP);
pinMode(buzzerPin, OUTPUT);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("LED1: OFF");
lcd.setCursor(0, 1);
lcd.print("LED2: OFF");
}
void loop() {
int button1State = digitalRead(button1Pin);
if (button1State == LOW && lastButton1State == HIGH) {
led1State = !led1State;
digitalWrite(led1Pin, led1State ? HIGH : LOW);
tone(buzzerPin, 2000);
delay(100);
noTone(buzzerPin); // Stop the tone
delay(100);
}
lastButton1State = button1State;
int button2State = digitalRead(button2Pin);
if (button2State == LOW && lastButton2State == HIGH) {
led2State = !led2State;
digitalWrite(led2Pin, led2State ? HIGH : LOW);
tone(buzzerPin, 2000);
delay(100);
noTone(buzzerPin); // Stop the tone
delay(100);
}
lastButton2State = button2State;
lcd.clear();
lcd.print("LED1: ");
lcd.print(led1State ? "ON" : "OFF");
lcd.setCursor(0, 1);
lcd.print("LED2: ");
lcd.print(led2State ? "ON" : "OFF");
delay(50);
}