#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <EasyBuzzer.h>
#define TRIG_PIN 9
#define ECHO_PIN 10
#define BUZZER_PIN 8
LiquidCrystal_I2C lcd(0x27, 16, 2); // Ajusta la dirección I2C según tu LCD
long duration;
float distance;
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
EasyBuzzer.setPin(BUZZER_PIN);
lcd.init(); // Inicializa el LCD
lcd.backlight(); // Enciende la luz de fondo del LCD
Serial.begin(9600);
}
void loop() {
EasyBuzzer.update();
// Genera un pulso ultrasónico
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Mide el tiempo que tarda en recibir el eco
duration = pulseIn(ECHO_PIN, HIGH);
// Calcula la distancia en centímetros
distance = duration * 0.034 / 2;
// Muestra la distancia en el LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.setCursor(10, 0);
lcd.print(distance);
lcd.print(" cm");
// Condición para el buzzer
if (distance < 100) { // Menor a 1 metro
int intensity = map(distance, 100, 10, 0, 255); // Mapear la distancia a la intensidad del buzzer
// Asegura que la intensidad no se pase de los valores límite
if (intensity > 255) intensity = 255;
if (intensity < 0) intensity = 0;
EasyBuzzer.singleBeep(intensity, 500);
delay(500);
//analogWrite(BUZZER_PIN, intensity);
} else {
EasyBuzzer.singleBeep(0, 500);
delay(500);
}
delay(100); // Retraso para evitar lecturas muy frecuentes
}