#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(115200);
Serial.println("\nI2C Scanner");
}
void loop()
{
i2c_check();
delay(2500);
}
void i2c_check()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16) Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknow error at address 0x");
if (address<16) Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0) Serial.println("No I2C devices found\n");
else Serial.println("done\n");
}
I2luY2x1ZGUgPFdpcmUuaD4KCnZvaWQgc2V0dXAoKQp7CiAgV2lyZS5iZWdpbigpOwogIFNlcmlhbC5iZWdpbigxMTUyMDApOwogIFNlcmlhbC5wcmludGxuKCJcbkkyQyBTY2FubmVyIik7Cn0KCgp2b2lkIGxvb3AoKQp7CiAgaTJjX2NoZWNrKCk7CiAgZGVsYXkoMjUwMCk7Cn0KCnZvaWQgaTJjX2NoZWNrKCkKewogIGJ5dGUgZXJyb3IsIGFkZHJlc3M7CiAgaW50IG5EZXZpY2VzOwoKICBTZXJpYWwucHJpbnRsbigiU2Nhbm5pbmcuLi4iKTsKCiAgbkRldmljZXMgPSAwOwogIGZvcihhZGRyZXNzID0gMTsgYWRkcmVzcyA8IDEyNzsgYWRkcmVzcysrICkgCiAgewogICAgV2lyZS5iZWdpblRyYW5zbWlzc2lvbihhZGRyZXNzKTsKICAgIGVycm9yID0gV2lyZS5lbmRUcmFuc21pc3Npb24oKTsKCiAgICBpZiAoZXJyb3IgPT0gMCkKICAgIHsKICAgICAgU2VyaWFsLnByaW50KCJJMkMgZGV2aWNlIGZvdW5kIGF0IGFkZHJlc3MgMHgiKTsKICAgICAgaWYgKGFkZHJlc3M8MTYpIFNlcmlhbC5wcmludCgiMCIpOwogICAgICBTZXJpYWwucHJpbnQoYWRkcmVzcyxIRVgpOwogICAgICBTZXJpYWwucHJpbnRsbigiICAhIik7CgogICAgICBuRGV2aWNlcysrOwogICAgfQogICAgZWxzZSBpZiAoZXJyb3I9PTQpIAogICAgewogICAgICBTZXJpYWwucHJpbnQoIlVua25vdyBlcnJvciBhdCBhZGRyZXNzIDB4Iik7CiAgICAgIGlmIChhZGRyZXNzPDE2KSBTZXJpYWwucHJpbnQoIjAiKTsKICAgICAgU2VyaWFsLnByaW50bG4oYWRkcmVzcyxIRVgpOwogICAgfSAgICAKICB9CiAgaWYgKG5EZXZpY2VzID09IDApIFNlcmlhbC5wcmludGxuKCJObyBJMkMgZGV2aWNlcyBmb3VuZFxuIik7CiAgZWxzZSBTZXJpYWwucHJpbnRsbigiZG9uZVxuIik7Cn0=