Построено по логике официального мануала, но очень аккуратно и красиво переделана для своих нужд.
#define BAUDRATE 115200 #include <Wire.h> void setup() { Wire.begin(); Serial.begin(BAUDRATE); while (!Serial); Serial.println("\n I2C Scanner"); } void loop() { Serial.print(" Scanning...\r\n\r\n 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F\r\n00 "); for (byte addr=1 ; addr<127; addr++ ) { if (addr % 16 == 0) { Serial.println(); if (addr < 16) Serial.print("0"); Serial.print(addr, HEX); Serial.print(' '); } Wire.beginTransmission(addr); byte err = Wire.endTransmission(); if (err == 0) { // if found if (addr < 16) Serial.print("0"); Serial.print(addr, HEX); Serial.print(' '); } else if ( err == 4 ) { // transmission error Serial.println("xx "); } else { // nothing found on address Serial.print("-- "); } } Serial.println("\r\n"); delay(10000); }