Skip to content

I2C Scanner

With the I2C scanner you can search for all the devices connected to the I2C bus.
When using on the SODAQ AFF you should see two devices.
The GPS and Accelerometer/Magnetometer(LSM303AGR) are both an I2C device.
The Accelerometer and Magnetometer have their own I2C address, therefor you should see three addresses in output of the scanner.
Due to the chip shortages some board are equipped with an LSM303C or LIS2DE. These boards have a different output.

Arduino sketch

#include <Wire.h>

void setup()
{
  Wire.begin();

  pinMode(GPS_ENABLE, OUTPUT);
  digitalWrite(GPS_ENABLE, HIGH);

  SerialUSB.begin(9600);
  while (!SerialUSB); // wait for serial monitor
  SerialUSB.println("I2C Scanner");
}

void loop()
{
  byte error, address;
  int nDevices;

  SerialUSB.println("Scanning...");

  nDevices = 0;
  for (address = 1; address < 127; address++ ) {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0) {
      SerialUSB.print("I2C device found at address 0x");
      if (address<16) {
        SerialUSB.print("0");
      }
      SerialUSB.print(address,HEX);
      SerialUSB.println("  !");

      nDevices++;
    }
    else if (error==4) {
      SerialUSB.print("Unknown error at address 0x");
      if (address<16) {
        SerialUSB.print("0");
      }
      SerialUSB.println(address,HEX);
    }
  }
  if (nDevices == 0)
    SerialUSB.println("No I2C devices found");
  else
    SerialUSB.println("done");

  delay(5000);           // wait 5 seconds for next scan
}

Output

The output for board with SAM-M8Q(GPS) and LSM303AGR(accelerometer/magnetometer) should look like this:

I2C Scanner
Scanning...
I2C device found at address 0x19  !
I2C device found at address 0x1E  !
I2C device found at address 0x42  !
done
Sensor Address
GPS 0x42
Accelerometer 0x19
Magnetometer 0x1E

Questions

You can ask us anything on our Forum.