/*
Mira el tutorial en 
Programador Novato: https://www.programadornovato.com/mover-2-servos-de-forma-independiente-con-esp32/
Youtube: https://www.youtube.com/watch?v=WXW66GXTC9M&list=PLCTD_CpMeEKTvjzabAvLGHakg-ql6t0q6&index=12

Ahora que ya hemos movido 2 servos de forma simultánea, 
vamos a Mover 2 servos de forma independiente con ESP32. 
Esto lo vamos a lograr calculando el tiempo en milisegundos 
para el servo1 y usando delay con el servo2.
*/

//Incluimos las libreias del servo
#include <ESP32Servo.h>
//Instanciamos los dos servos
Servo servo_1;
Servo servo_2;
void setup()
{
  //Configuramos los servos a sis respectivos pines y sus tiempos
  servo_1.attach(2, 500, 2500);
  servo_2.attach(4, 500, 2500);
  //Movemos los dos servos a 0 grados
  servo_1.write(0);
  servo_2.write(0);

}
//Inicializamos los milisegundos del tiempo inicial a esperar
long previoMiliseg=0;
//Inicializamos el teimpo a esperar
long intervaluo=50;
//Inicializamos la direccion 
//1 = derecha (aumenta de 0 a 180) 
//-0 = izquierda (baja de 180 a 0)
int direccion=1;
//Inicializamos la posicion en 0 grados
int pos;
void loop()
{
  //Este momento
  long actualMiliseg=millis();
  //Si ya pasaron (intervaluo)100 milisegundos
  if( actualMiliseg-previoMiliseg>=intervaluo ){
    //Actualizamos este momento
    previoMiliseg=actualMiliseg;
    //Leemos la posicion del servo1
    pos=servo_1.read();
    //Si la posicion del servo1 es menor a 0 lo movemos a la derecha
    if(pos<=0){
      direccion=1;
    }
    //Si la posicion del servo1 es mayor a 180 lo movemos a la izquierda
    if(pos>=180){
      direccion=-1;
    }
    //Movemos el servo1 de 10 en 10 grados (ya sea a la izquierda o a la derecha)
    pos=pos+(direccion*10);
    servo_1.write(pos);
  }
  //Movemos el servo 2 a la izquierda y a la derecha de forma independiente al servo1
  servo_2.write(90);
  delay(1000);
  servo_2.write(0);
  delay(1000);
}