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 >>

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

En Programador Novato vivimos de los anuncios, hemos detectado que está utilizando extensiones para bloquear anuncios. Ayudanos deshabilitando tu bloqueador de anuncios. :)