#include <ESP32Servo.h>
const int pinServo1 = 13;
const int pinServo2 = 12;
Servo servo1;
Servo servo2;
volatile float setup_servo1 = 10.0;
volatile float setup_servo2 = 100.0;
hw_timer_t *timer1 = NULL;
hw_timer_t *timer2 = NULL;
portMUX_TYPE timerMUX = portMUX_INITIALIZER_UNLOCKED;
void IRAM_ATTR servo1_run(){
portENTER_CRITICAL_ISR(&timerMUX);
if(setup_servo1 <= 150){
setup_servo1 += (((150.0-10.0)/5000.0)*10.0);
servo1.write(setup_servo1);
}
portEXIT_CRITICAL_ISR(&timerMUX);
}
void IRAM_ATTR servo2_run(){
portENTER_CRITICAL_ISR(&timerMUX);
if(setup_servo2 >= 50){
setup_servo2 -= (((100.0-50.0)/5000.0)*10.0);
servo2.write(setup_servo2);
}
portEXIT_CRITICAL_ISR(&timerMUX);
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
servo1.attach(pinServo1);
servo2.attach(pinServo2);
servo1.write(setup_servo1);
servo2.write(setup_servo2);
timer1 = timerBegin(0, 80, true);
timerAttachInterrupt(timer1, &servo1_run, true);
timerAlarmWrite(timer1, 10000, true);
timerAlarmEnable(timer1);
timer2 = timerBegin(1, 80, true);
timerAttachInterrupt(timer2, &servo2_run, true);
timerAlarmWrite(timer2, 10000, true);
timerAlarmEnable(timer2);
}
void loop() {
}