#include <ESPservo.h>
Servo myServo;
// Pin definitions
int buttonA = 12; // Start button
int buttonB = 14; // Stop button
int servoPin = 18;
// Variables
bool servoRunning = false;
int angle = 0;
void setup() {
Serial.begin(115200);
// Attach servo
myServo.attach(servoPin);
// Set button pins
pinMode(buttonA, INPUT_PULLUP);
pinMode(buttonB, INPUT_PULLUP);
}
void loop() {
// Read buttons
if (digitalRead(buttonA) == LOW) {
servoRunning = true; // Start servo
delay(200); // Debounce
}
if (digitalRead(buttonB) == LOW) {
servoRunning = false; // Stop servo
delay(200); // Debounce
}
// Servo running condition
if (servoRunning == true) {
// Sweep motion
for (angle = 0; angle <= 180; angle += 5) {
myServo.write(angle);
delay(50);
// Stop immediately if Button B pressed
if (digitalRead(buttonB) == LOW) {
servoRunning = false;
break;
}
}
for (angle = 180; angle >= 0; angle -= 5) {
myServo.write(angle);
delay(50);
// Stop immediately if Button B pressed
if (digitalRead(buttonB) == LOW) {
servoRunning = false;
break;
}
}
}
}