#include <ESP32Servo.h>;
Servo servo;
int buttonslow = 15;
int buttonmedium = 2;
int buttonfast = 4;
int buttonstop = 5;
bool motorrunning = false;
int ledslow = 18;
int ledmedium = 19;
int ledfast = 21;
int spd;
int lastposition;
int servopin = 23;
void setup(){
servo.attach(servopin);
pinMode(ledslow, OUTPUT);
pinMode(ledmedium, OUTPUT);
pinMode(ledfast, OUTPUT);
pinMode(buttonslow, INPUT_PULLUP);
pinMode(buttonmedium, INPUT_PULLUP);
pinMode(buttonfast, INPUT_PULLUP);
pinMode(buttonstop, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(buttonslow), slow, RISING);
attachInterrupt(digitalPinToInterrupt(buttonmedium), medium, RISING);
attachInterrupt(digitalPinToInterrupt(buttonfast), fast, RISING);
attachInterrupt(digitalPinToInterrupt(buttonstop), stop, RISING);
digitalWrite(ledslow, HIGH);
digitalWrite(ledmedium, HIGH);
digitalWrite(ledfast, HIGH);
}
void slow(){
servo.attach(servopin);
motorrunning = true;
spd = 105;
digitalWrite(ledslow, LOW);
digitalWrite(ledmedium, HIGH);
digitalWrite(ledfast, HIGH);
}
void medium(){
servo.attach(servopin);
motorrunning = true;
spd = 60;
digitalWrite(ledslow, HIGH);
digitalWrite(ledmedium, LOW);
digitalWrite(ledfast, HIGH);
}
void fast(){
servo.attach(servopin);
motorrunning = true;
spd = 15;
digitalWrite(ledslow, HIGH);
digitalWrite(ledmedium, HIGH);
digitalWrite(ledfast, LOW);
}
void stop(){
servo.detach();
motorrunning = false;
digitalWrite(ledslow, HIGH);
digitalWrite(ledmedium, HIGH);
digitalWrite(ledfast, HIGH);
}
void loop(){
if (motorrunning) {
for (int i = 0; i < 180; i++){
servo.write(i);
delay(spd);
}
for (int i = 180; i > 0; i--){
servo.write(i);
delay(spd);
}
}
}