Arduino i2c Scanner

Построено по логике официального мануала, но очень аккуратно и красиво переделана для своих нужд.

#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);
}