#include <Servo.h>
unsigned long dur_t, start_t;
Servo arm;
float pos = 0.0;
float step = 30.0;
bool buttonPressed = false;
void setup() {
pinMode(4, INPUT_PULLUP);
arm.attach(3);
arm.write(pos);
}
void loop() {
if (digitalRead(4) == LOW && !buttonPressed) {
buttonPressed = true;
delay(50);
start_t = millis();
}
if (digitalRead(4) == HIGH && buttonPressed) {
dur_t = millis() - start_t;
buttonPressed = false;
if (dur_t < 300) {
rotateClockwise();
} else {
rotateAntiClockwise();
}
}
}
void rotateClockwise() {
if (pos <= 150.0) {
pos = pos+step;
arm.write(pos);
delay(100);
}
}
void rotateAntiClockwise() {
if (pos >= 30.0) {
pos = pos-step;
arm.write(pos);
delay(100);
}
}