#include <Wire.h>
#include <Adafruit_VL6180X.h>

Adafruit_VL6180X vl = Adafruit_VL6180X();

// I2C ESP32 (valeurs par défaut fréquentes)
static const int I2C_SDA = 21;
static const int I2C_SCL = 22;

void setup() {
  Serial.begin(115200);
  delay(200);

  // Init I2C (ESP32 permet de choisir les pins)
  Wire.begin(I2C_SDA, I2C_SCL);
  Wire.setClock(400000); // 400 kHz

  Serial.println("Init VL6180X...");

  if (!vl.begin()) {
    Serial.println("Erreur: VL6180X non detecte sur le bus I2C.");
    Serial.println("Verifier: cablage, adresse I2C, alimentation, pull-ups.");
    while (true) delay(1000);
  }

  Serial.println("VL6180X OK.");
}

void loop() {
  // Distance en mm
  uint8_t range = vl.readRange();

  // Code de statut (0 = OK)
  uint8_t status = vl.readRangeStatus();

  // ALS (luminosite). Paramètre = gain (ex: VL6180X_ALS_GAIN_5)
  // Tu peux ajuster le gain suivant ton environnement.
  float lux = vl.readLux(VL6180X_ALS_GAIN_5);

  if (status == VL6180X_ERROR_NONE) {
    Serial.print("Distance: ");
    Serial.print(range);
    Serial.print(" mm");
  } else {
    Serial.print("Distance: ERR status=");
    Serial.print(status);
  }

  Serial.print(" | Lux: ");
  Serial.println(lux, 2);

  delay(200);
}
