//Agregamos las libreriras del servo
#include <ESP32Servo.h>
//Instanciamos nuestro servo
Servo servo;
int pinServo=27;
const int trigPin = 26;
const int echoPin = 25;
const int ledRojo = 4; // LED rojo en GPIO 4
const int ledVerde = 15; // LED verde en GPIO 15
void setup()
{
//Inicializamos la posicion del servo
servo.attach(pinServo, 500, 2500);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledRojo, OUTPUT);
pinMode(ledVerde, OUTPUT);
}
//Inicializamos la posicion (en grados) del servo
int pos = 0;
void loop() {
//Ciclo que posicionara el servo desde 0 hsta 180 grados
for (pos = 0; pos <= 180; pos += 1) {
//Movemos el servo a los grados que le entreguemos
servo.write(pos);
//Esperamos 15 milisegundos
delay(15);
}
//Ciclo que posicionara el servo desde 180 hsta 0 grados
for (pos = 180; pos >= 0; pos -= 1) {
//Movemos el servo a los grados que le entreguemos
servo.write(pos);
//Esperamos 15 milisegundos
delay(15);
}
/*
//Movemos el servo a 0 grados
servo.write(0);
//Esperamos 1.5 segundos
delay(1500);
//Movemos el servo a 180 grados
servo.write(180);
//Esperamos 1.5 segundos
delay(1500);
*/
// Generar pulso en TRIG
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Leer tiempo en microsegundos
long duration = pulseIn(echoPin, HIGH);
// Convertir a centímetros
float distance = duration / 58.0;
// Control de LEDs según distancia
if (distance <= 10) {
digitalWrite(ledRojo, HIGH); // Enciende rojo
digitalWrite(ledVerde, LOW); // Apaga verde
} else {
digitalWrite(ledRojo, LOW); // Apaga rojo
digitalWrite(ledVerde, HIGH); // Enciende verde
}
delay(300); // pequeña pausa
}