12. Mover 2 servos de forma independiente con ESP32

Mover 2 servos de forma independiente con ESP32

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.

Requerimientos:

  • 2 Servomotores.
  • Cables.

Conexiones:

  • Conectamos la tierra (Cable café) del servo 1 y el servo 2 a la tierra.
  • Conectamos la corriente (Cable rojo) del servo 1 y el servo 2 a VIN.
  • Conectamos la señal (Cable naranja) del servo 1 al PIN D2.
  • Conectamos la señal (Cable naranja) del servo 2 al PIN D4.

Código y diagrama: https://wokwi.com/projects/343451268891542100

ESP32 con Múltiples Servos
Mover 2 servos de forma independiente con ESP32

Código:

/*
Mover 2 servos de forma independiente con ESP32
*/
//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);
}
Mover 2 servos de forma independiente con ESP32
Mover 2 servos de forma independiente con ESP32

🎦 Este curso: https://www.youtube.com/watch?v=VuJkqL2Ys3Y&list=PLCTD_CpMeEKTvjzabAvLGHakg-ql6t0q6&ab_channel=ProgramadorNovato

🎦 Curso de Arduino: https://www.youtube.com/watch?v=oGinJt9aALc&list=PLCTD_CpMeEKSqw3Nh7rA9aXUAzbPIPkdv&ab_channel=ProgramadorNovato

🎦 [CURSO] C++ DE 0 A HEROE: https://www.youtube.com/watch?v=APN8aCyPvww&list=PLCTD_CpMeEKTofxs7iottRxJ5YPM7BOcc

<<Anterior tutorial Siguiente tutorial >>

Los comentarios están cerrados.