// Servo Sweep example for the ESP32
// https://wokwi.com/arduino/projects/323706614646309460
#include <ESP32Servo.h>
#include <Eventually.h>
const int servoPin = 12;
const int startButtonPin = 22
const int stopButtonPin = 22
enum LoopStatus {
APP_STOP = 100,
APP_START,
};
const int moveAngleLength = 10;
const int negAngle = 90 - moveAngleLength;
const int posAngle = 90 + moveAngleLength;
Servo servo;
LoopStatus loopStatus = APP_STOP
void setup() {
servo.attach(servoPin, 500, 2400);
servo.write(negAngle);
delay(1000);
}
void loop() {
if(loopStatus == APP_START) {
moveServoSmoothly(negAngle, posAngle, 100); // 0도에서 180도로 3초 동안 이동
// delay(100);
moveServoSmoothly(posAngle, negAngle, 100); // 180도에서 0도로 3초 동안 이동
// delay(100);
}
}
void moveServoSmoothly(int startAngle, int endAngle, int duration) {
int steps = abs(endAngle - startAngle);
int stepDelay = duration / steps;
int pos = startAngle;
if (startAngle < endAngle) {
for (int i = 0; i <= steps; i++) {
servo.write(pos++);
delay(stepDelay);
}
} else {
for (int i = 0; i <= steps; i++) {
servo.write(pos--);
delay(stepDelay);
}
}
}
bool handle_press_start (){
loopStatus = APP_START
}
bool handle_press_stop (){
loopStatus = APP_STOP
}