#include <ESP32Servo.h>
#define button1 12
#define button2 14
#define Led_Pin 2
const int servo_1_Pin = 18;
bool left=0;
bool right=0;
Servo servo;
int slow_speed_vertical=90;
portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED;
void IRAM_ATTR turnServoLeft() {
//write here code to change LOW->HIGH and HIGH->LOW
left=1;
//slow_speed_vertical=slow_speed_vertical-10;
}
void IRAM_ATTR turnServoRight() {
//write here code to change LOW->HIGH and HIGH->LOW
right=1;
//slow_speed_vertical=slow_speed_vertical+10;
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
pinMode(Led_Pin, OUTPUT);
attachInterrupt(digitalPinToInterrupt(button1), turnServoLeft, FALLING);
attachInterrupt(digitalPinToInterrupt(button2), turnServoRight, FALLING);
servo.attach(servo_1_Pin);
}
void loop() {
Serial.println(slow_speed_vertical);
if (left==1&&slow_speed_vertical>0)
{
slow_speed_vertical=slow_speed_vertical-10;
left=0;
}
if (right==1&&slow_speed_vertical<180&&slow_speed_vertical>=0)
{
slow_speed_vertical=slow_speed_vertical+10;
right=0;
}
if (slow_speed_vertical==180||slow_speed_vertical==0) {
digitalWrite(Led_Pin, HIGH);
}
else {
digitalWrite(Led_Pin, LOW);
}
portENTER_CRITICAL(&mux);
servo.write(slow_speed_vertical);
delay(500);
portEXIT_CRITICAL(&mux);
}