#include <ESP32Servo.h>
//Puertos definidos del ULtrasonico
const int TRIG_PIN = 25; //define TRIG_PIN 18 trigger (salida)
const int ECHO_PIN = 26; //define ECHO_PIN 5 entrada
const int LED = 2; //Define LED 2 soldado en placa
const int Sensor_LDR = 32;
//Leds de la placa
const int led1 = 13;
const int led2 = 14;
const int led3 = 15;
const int led4 = 23;
//Los cosos de los botones
const int btn1 = 18;
const int btn2 = 19;
//Pin del Servomotor
const int servoPin = 5;
Servo myServo;
//valores del ultrasonico
float duration_us , distance_cm;
void setup()
{
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(LED, OUTPUT);
pinMode(btn1,INPUT);
pinMode(btn2, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
myServo.attach(servoPin);
}
void loop()
{
//Estado de los botones
int estado_btn1 = digitalRead(btn1);
int estado_btn2 = digitalRead(btn2);
//PROGRAMACION DEL ULTRASONICO
digitalWrite(TRIG_PIN, HIGH); //generacion e pulso en 10 microsegundos
delayMicroseconds(10); //10 MICROSEGUNDOS
digitalWrite(TRIG_PIN, LOW);
duration_us = pulseIn(ECHO_PIN, HIGH);// MEDICION DE LA DURACION EL PULSO
distance_cm = 0.017 * duration_us; //calcula la distancia dn cm
Serial.print("Distancia: ");
Serial.print(distance_cm);
Serial.println(" cm");
//PROGRAMACION DEL LDR
int valor_luz = analogRead(Sensor_LDR);
Serial.print("Luz: ");
Serial.println(valor_luz);
Serial.println("");
if(distance_cm < 10 && distance_cm > 5)
{
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
// Gira el servomotor 45 grados en sentido horario
myServo.write(45);
}
else if (valor_luz >=100)
{
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
// Gira el servomotor 60 grados en sentido horario
myServo.write(60);
}
else if (estado_btn1 == HIGH || estado_btn2 == HIGH)
{
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
digitalWrite(led4, LOW);
// Gira el servomotor 120 grados en sentido horario
myServo.write(120);
}
else if(distance_cm >= 10 && distance_cm < 20 && estado_btn2 == HIGH)
{
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, HIGH);
// Gira el servomotor 150 grados en sentido horario
myServo.write(150);
}
else
{
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
// Gira el servomotor 90 grados en sentido horario
myServo.write(90);
}
}