
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
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);
}
🎦 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 >>
Ave que vuela, a la cazuela.