#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ESP32Servo.h>
const int pushButtonPin = 18;
const int ldrPin = 35;
const int buzzerPin = 26;
const int servoPin = 19;
LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo servo;
int lastButtonState = 0;
bool buttonState = false;
void setup() {
pinMode(pushButtonPin, INPUT_PULLUP);
pinMode(buzzerPin, OUTPUT);
servo.attach(servoPin);
lcd.init();
lcd.backlight();
lcd.print("Press button");
}
void loop() {
bool currentButtonState = digitalRead(pushButtonPin);
if (currentButtonState == LOW && lastButtonState == HIGH) {
delay(50);
buttonState = !buttonState;
if (buttonState) {
mainFunction();
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("My 1st project");
}
}
lastButtonState = currentButtonState;
int ldrValue = analogRead(ldrPin);
lcd.setCursor(0, 1);
lcd.print("LDR Value: " + ldrValue);
}
void mainFunction() {
tone(buzzerPin, 1000);
delay(5);
noTone(buzzerPin);
for (int i = 0; i < 2; i++) {
for (int pos = 0; pos <= 180; pos++) {
servo.write(pos);
delay(15);
}
for (int pos = 180; pos >= 0; pos--) {
servo.write(pos);
delay(15);
}
}
}