#include <Servo.h>
#include <ezButton.h>

Servo myservo;

const int neutralAngle = 90;
const int forwardAngle = 75;
const int reverseAngle = 105;

const int btnStartPin = 13;
const int btnStopPin = 12;

ezButton btnStart(btnStartPin);
ezButton btnStop(btnStopPin);

void setup()
{

    myservo.attach(9);
    myservo.write(neutralAngle);
    delay(100);

    btnStart.setDebounceTime(50);
    btnStop.setDebounceTime(50);
}

void loop()
{

    btnStart.loop();
    btnStop.loop();

    if (btnStart.isPressed())
    {
        myservo.write(forwardAngle);

        // 서보 모터가 지정된 각도로 이동한 후 경과된 시간을 측정합니다.
        long startTime = millis();

        // 서보 모터가 지정된 각도로 이동할 때까지 기다립니다.
        while (myservo.read() != forwardAngle)
        {
            // do nothing
        }

        // 2초가 경과했는지 확인합니다.
        if (millis() - startTime >= 2000)
        {
            myservo.write(reverseAngle);
        }
    }

    if (btnStop.isPressed())
    {
        myservo.write(neutralAngle);
    }
}