//Sensor ultrasonico utilizando un buzzer como referencia.
//si la distancia es menor a 20 cm, se encenderá el buzzer
//INICIO DE LAS VARIABLES
int DISTANCIA = 0;//SERÁ UN VARIABLE DE TIPO DE ENTERO PARA ALGUNA OPERACIÓN.
int pinLed=2; //PARA EL PIN DEL ANODO DEL LED
int pinEco=12;// PARA EL PIN DEL ECHO(RECEPTOR) RECIBE LA SEÑAL.
int pinGatillo=13;//PARA EL PIN DEL TRIG (EMISOR) ENVIA LA SEÑAL
const int buzzerPin = 4;// Definir el pin del zumbador
const int frequency = 80; // Puedes ajustar la frecuencia para cambiar el tono. si la frecuencia es mayor es más agudo.
// Frecuencia del sonido (en Hertz)
const int pwmChannel = 0;// Canal de PWM (el ESP32 tiene 16 canales de PWM: 0 a 15)
const int resolution = 8;// Resolución del PWM (de 1 a 16 bits)
const int dutyCycle = 128; // 50% de ciclo de trabajo
// Variable para almacenar la señal de duty cycle
//FIN DE LA ASIGNACIÓN DE VARIABLES.
long readUltrasonicDistance(int triggerPin, int echoPin) //ESTO ES PARA SABER LOS VALORES Y EL RETARDO QUE REALIZA PARA OBTENER UN VALOR
{
//Iniciamos el pin del emisor de reuido en salida
pinMode(triggerPin, OUTPUT);//SALE LA SEÑAL.
//Apagamos el emisor de sonido
digitalWrite(triggerPin, LOW);//TENGO UNA SEÑAL BAJA, APAGO EL PIN DEL TRIG, PARA QUE NO SALGA NINGUNA SEÑAL
//Retrasamos la emision de sonido por 2 milesismas de segundo
delayMicroseconds(2);
// Comenzamos a emitir sonido
digitalWrite(triggerPin, HIGH);//EMITO UN SONIDO
//Retrasamos la emision de sonido por 10 milesismas de segundo
delayMicroseconds(10);//NOS DETENEMOS 10 MILISEGUNDOS
//Apagamos el emisor de sonido
digitalWrite(triggerPin, LOW);//APAGO EL PIN DEL TRIG
//Comenzamos a escuchar el sonido
pinMode(echoPin, INPUT);//ENTRA LA SEÑAL POR ESE PIN
// Calculamos el tiempo que tardo en regresar el sonido
return pulseIn(echoPin, HIGH);//RETORNO TODO ESE VALOR.
//EL COMANDO PULSEIN SIRVE PARA SABER EL TIEMPO QUE TARDÓ EN IR Y VENIR
}
//ACTIVACIÓN DE LAS VARIABLES
void setup() {
Serial.begin(115200); //LO VEMOS EN EL MONITOR SERIAL PARA SABER SU VALOR RESPECTIVO
pinMode(buzzerPin, OUTPUT);// Configurar el pin del zumbador como salida
ledcSetup(pwmChannel, frequency, resolution);// Configurar el canal de PWM
ledcAttachPin(buzzerPin, pwmChannel); // Adjuntar el canal de PWM al pin del zumbador
pinMode(pinLed, OUTPUT);//Configuramos el pin del led como salida
}
void loop() {
//Calculamos la distancia en cm
DISTANCIA = 0.01723 * readUltrasonicDistance(pinGatillo, pinEco);//COMO YA HICIMOS EL CALCULO ANTES, AQUI PONEMOS DE NUEVO EL COMANDO PERO REFIRIENDOSE A LOS PINES DONDE VAMOS A CALCULAR.
//Mostramos la disstancia
Serial.println(DISTANCIA);//SE VE EN EL MONITOR SERIAL
//Si la distancia es menor a 20 encendemos el led
if (DISTANCIA < 20) {//AQUI DECIDO QUÉ DISTANCIA QUIERO QUE ENCIENDA MI LED.
digitalWrite(pinLed, HIGH);//SI ES MENOR A 20CM SE ENCIENDE EL LED
ledcWrite(pwmChannel, dutyCycle);// Iniciar la señal PWM
delay(1000);// Mantener el zumbador sonando durante 1 segundo
}
//Si la distancia es mayor a 20 apagamos el led
else {
digitalWrite(pinLed, LOW);//SI ES MAYOR A 20CM SE APAGA EL LED
ledcWrite(pwmChannel, 0);// Detener la señal PWM
delay(1000);// Esperar 1 segundos
}
delay(10);
}