#include <ESP32Servo.h>
Servo servo;
#define pinServo 18
#define pinButton 27
const int stepDeg = 1;
const int stepDelayMs = 15;
void moveServoSmooth(int fromDeg, int toDeg) {
if (fromDeg < toDeg) {
for (int p = fromDeg; p <= toDeg; p += stepDeg) {
servo.write(p);
delay(stepDelayMs);
}
} else {
for (int p = fromDeg; p >= toDeg; p -= stepDeg) {
servo.write(p);
delay(stepDelayMs);
}
}
}
void setup() {
pinMode(pinButton, INPUT_PULLUP);
servo.attach(pinServo);
servo.write(0);
}
void loop() {
bool button = digitalRead(pinButton);
if (button == 0) {
moveServoSmooth(0, 180);
delay(10000);
moveServoSmooth(180, 0);
while (digitalRead(pinButton) == 0) {
delay(10);
}
} else {
servo.write(0);
}
}