#include <ESP32Servo.h>
#include <Arduino.h>
const int servoPin = 18;
const int buttonLeftPin = 32;
const int buttonRightPin = 33;
const int ledPin = 2;
Servo servo;
int servoPosition = 90;
int minServoPosition = 0;
int maxServoPosition = 180;
volatile bool leftButtonPressed = false;
volatile bool rightButtonPressed = false;
void handleLeftButton() {
leftButtonPressed = true;
}
void handleRightButton() {
rightButtonPressed = true;
}
void setup() {
Serial.begin(115200);
servo.attach(servoPin);
pinMode(buttonLeftPin, INPUT_PULLUP);
pinMode(buttonRightPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
attachInterrupt(digitalPinToInterrupt(buttonLeftPin), handleLeftButton, FALLING);
attachInterrupt(digitalPinToInterrupt(buttonRightPin), handleRightButton, FALLING);
}
void loop() {
if (leftButtonPressed) {
if (servoPosition > minServoPosition) {
servoPosition -= 10;
servo.write(servoPosition);
Serial.println("Move left to " + String(servoPosition) + "°");
}
leftButtonPressed = false;
}
if (rightButtonPressed) {
if (servoPosition < maxServoPosition) {
servoPosition += 10;
servo.write(servoPosition);
Serial.println("Move right to " + String(servoPosition) + "°");
}
rightButtonPressed = false;
}
if (servoPosition <= minServoPosition || servoPosition >= maxServoPosition) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
delay(100);
}