#include <Wire.h>

// ST25DV16K I2C scan test
// UNO/Nano: SDA=A4, SCL=A5
// ESP32: call Wire.begin(21, 22) instead of Wire.begin()

void setup() {
  Serial.begin(115200);
  while (!Serial) {
    delay(10);
  }

  Wire.begin();
  // For ESP32, use:
  // Wire.begin(21, 22);

  Serial.println("ST25DV16K I2C scan start");
  Serial.println("Common addresses may include 0x2D, 0x53, 0x57.");
}

void loop() {
  byte found = 0;

  for (byte addr = 1; addr < 127; addr++) {
    Wire.beginTransmission(addr);
    byte error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("I2C device found at 0x");
      if (addr < 16) Serial.print("0");
      Serial.println(addr, HEX);
      found++;
    }
  }

  if (found == 0) {
    Serial.println("No I2C device found. Check VIN, GND, SDA, SCL.");
  } else {
    Serial.print("Scan done. Found ");
    Serial.print(found);
    Serial.println(" device address(es).");
  }

  delay(3000);
}
