#include <ESP32Servo.h>
const int servoPin = 18;
const int buttonPin = 19;
Servo servo;
bool isMoving = false;
bool buttonState = false;
bool lastButtonState = false;
unsigned long startTime = 0;
const unsigned long duration = 20000; // Durasi 20 detik
void setup() {
servo.attach(servoPin); // Inisialisasi servo
pinMode(buttonPin, INPUT_PULLUP); // Tombol dengan pull-up internal
Serial.begin(115200);
servo.write(90); // Posisi netral, servo berhenti
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == LOW && lastButtonState == HIGH) {
// Tombol ditekan
if (!isMoving) {
servo.write(0); // Kecepatan maksimum searah jarum jam
startTime = millis(); // Mulai hitung waktu
isMoving = true;
Serial.println("Servo berputar.");
}
delay(200); // Debounce delay
}
if (isMoving && millis() - startTime >= duration) {
servo.write(90); // Posisi netral, servo berhenti
isMoving = false;
Serial.println("Servo berhenti.");
}
lastButtonState = buttonState;
}