#include <Wire.h>
// Estructura para almacenar frecuencia y rango de direcciones
struct FrecuenciaYRango {
int frecuencia;
int inicio;
int fin;
};
// Array de frecuencias y rangos
FrecuenciaYRango frecuencias[] = {
{32000, 1, 60}, // Frecuencia 32 kHz, direcciones 0x01 a 0x3F
{100000, 1, 60}, // Frecuencia 100 kHz, direcciones 0x41 a 0x7F
{1000000, 1, 60}, // Frecuencia 100 kHz, direcciones 0x41 a 0x7F
{20000000, 1, 60}, // Frecuencia 100 kHz, direcciones 0x41 a 0x7F
// ... agregar más elementos si es necesario
};
const int numFrecuencias = sizeof(frecuencias) / sizeof(frecuencias[0]);
void setup() {
Serial.begin(115200);
Wire.begin();
Wire.setPins(21, 22);
}
void loop() {
for (int i = 0; i < numFrecuencias; i++) {
Wire.setClock(frecuencias[i].frecuencia);
Serial.print("Probando frecuencia: ");
Serial.print(frecuencias[i].frecuencia);
Serial.println(" Hz");
for (byte addr = frecuencias[i].inicio; addr <= frecuencias[i].fin; addr++) {
Wire.beginTransmission(addr);
byte error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
if (addr < 16)
Serial.print("0");
Serial.println(addr, HEX);
}
}
delay(5000);
}
}