//Agregamos las libreriras del servo
#include <ESP32Servo.h>
int const TriggerPin = 27;
int const EchoPin = 26;
int const PinServo = 33;
int const PinPotenciometro = 35;
int PotVal = 0 ;
int angulo = 0 ;
int tiempoObjeto = 0;
int distanciaObjeto = 0;
Servo Servo1;
void setup()
{
//Inicializamos la posicion del servo
Servo1.attach(PinServo, 500, 2500);
pinMode(TriggerPin, OUTPUT);
pinMode(EchoPin, INPUT);
Serial.begin(9600);
}
void loop()
{
leerSensores();
realizarCalculos();
realizarAcciones();
mostrarLogs();
// delay(500);
}
long leerSensorUltrasonido()
{
//Desactivo el trigger
digitalWrite(TriggerPin, LOW);
delayMicroseconds(2);
//Activo el Trigger por 10 microsegundos
digitalWrite(TriggerPin, HIGH);
delayMicroseconds(10);
//Desactivo el trigger
digitalWrite(TriggerPin, LOW);
//Leo el pin de Echo, y retorno el tiempo en
//microsegundos en donde se encuentra el objeto
return pulseIn(EchoPin, HIGH);
}
void leerSensores()
{
// leo el valor sensado por el potenciometro
PotVal = analogRead(PinPotenciometro);
//leo el valor sensado por el ultrasonido
tiempoObjeto = leerSensorUltrasonido();
}
void realizarCalculos()
{
//segun el valor del poteniometro calculo el valor del angulo
angulo=map(PotVal,0,4096,0,180);
//calculo la distancia del objeto aplicando la formula
//de la velocidad del sonido
distanciaObjeto=0.01723*tiempoObjeto;
}
void realizarAcciones()
{
//muevo el servo según el angulo calculado
Servo1.write(angulo);
}
void mostrarLogs()
{
Serial.print("PotVal:");
Serial.print(PotVal);
Serial.print(" angulo:");
Serial.print(angulo);
Serial.print(" Distancia: ");
Serial.print(distanciaObjeto);
Serial.print("cm");
Serial.println ();
}
sensor distancia 5v (15ma)
fuente 5v
fuente 3,3v
servo 5v (500ma)
poten 3,3v (3,3ma)