#include <ESP32Servo.h>
//Instanciamos nuestro servo
Servo servo;
int pinServo=2;
int DISTANCIA = 0;
int pinLed=4;
int pinEco=12;
int pinGatillo=13;
long readUltrasonicDistance(int triggerPin, int echoPin)
{
//Iniciamos el pin del emisor de reuido en salida
pinMode(triggerPin, OUTPUT);
//Apagamos el emisor de sonido
digitalWrite(triggerPin, LOW);
//Retrasamos la emision de sonido por 2 milesismas de segundo
delayMicroseconds(2);
// Comenzamos a emitir sonido
digitalWrite(triggerPin, HIGH);
//Retrasamos la emision de sonido por 2 milesismas de segundo
delayMicroseconds(10);
//Apagamos el emisor de sonido
digitalWrite(triggerPin, LOW);
//Comenzamos a escuchar el sonido
pinMode(echoPin, INPUT);
// Calculamos el tiempo que tardo en regresar el sonido
return pulseIn(echoPin, HIGH);
}
void setup() {
Serial.begin(115200);
//Configuramos el pin del led como salida
pinMode(pinLed, OUTPUT);
//Inicializamos la posicion del servo
servo.attach(pinServo, 500, 2500);
}
int pos = 0;
void loop() {
//Calculamos la distancia en cm
DISTANCIA = 0.01723 * readUltrasonicDistance(pinGatillo, pinEco);
//Mostramos la disstancia
Serial.println(DISTANCIA);
//Si la distancia es menor a 30 encendemos el led
if (DISTANCIA > 30) {
delay(8000);
digitalWrite(pinLed, LOW);
pos = 0; pos <= 0; pos += 1;
//Movemos el servo a los grados que le entreguemos
servo.write(pos);
//Esperamos 15 milisegundos
delay(15);
}
//Si la distancia es mayor a 30 apagamos el led
else {
digitalWrite(pinLed, HIGH);
pos = 180; pos <= 0; pos -= 1;
//Movemos el servo a los grados que le entreguemos
servo.write(pos);
//Esperamos 15 milisegundos
delay(15);
}
delay(10);
}