#include <Wire.h>
#include <VL53L0X.h>


VL53L0X sensor;

const int buzzerPin = 7; // Pin donde está conectado el buzzer
const int umbralDistancia = 100; // Umbral de distancia en mm, ajusta según tus necesidades

unsigned long tiempoAnterior = 0;
const unsigned long intervaloMedicion = 100; // Intervalo de tiempo entre mediciones en milisegundos
bool objetoCerca = false; // Bandera para indicar si hay un objeto cerca

void setup() {
  Serial.begin(9600);
  pinMode(buzzerPin, OUTPUT);

  Wire.begin();
  sensor.init();
  sensor.setTimeout(500);
}

void loop() {
  unsigned long tiempoActual = millis();

  // Realizar una nueva medición de distancia si ha pasado suficiente tiempo
  if (tiempoActual - tiempoAnterior >= intervaloMedicion) {
    int distancia = sensor.readRangeSingleMillimeters();
    tiempoAnterior = tiempoActual;

    // Mostrar la distancia en el monitor serial (opcional)
    Serial.print("Distancia: ");
    Serial.print(distancia);
    Serial.println(" mm");

    // Comprobar si la distancia está por debajo del umbral
    if (distancia < umbralDistancia) {
      // Si está por debajo del umbral, activar el buzzer
      digitalWrite(buzzerPin, HIGH);
      objetoCerca = true; // Hay un objeto cerca
    } else {
      objetoCerca = false; // No hay un objeto cerca
      digitalWrite(buzzerPin, LOW);
    }
  }

  // Si el objeto sigue cerca, mantener el buzzer activado
  if (objetoCerca) {
    digitalWrite(buzzerPin, HIGH);
  } else {
    digitalWrite(buzzerPin, LOW);
  }
}
