Ad Space — Top Banner

I2C Device Not Found

Arduino Microcontroller Board

Severity: Moderate

What it means

I2C device not found on Arduino means the scanner returns no addresses.
The most common cause is SDA and SCL wires swapped, or the I2C bus missing pull-up resistors.
Run the I2C scanner sketch and check your wiring against the device datasheet.

Affected Models

  • Arduino Uno
  • Arduino Nano
  • Arduino Mega 2560
  • Arduino Leonardo
  • Arduino Pro Mini
  • Arduino clones

Common Causes

  • SDA and SCL wires swapped at the device or the Arduino
  • Missing or too-weak pull-up resistors on the I2C bus
  • Device powered at 5V but Arduino I2C pins only tolerating 3.3V (or vice versa)
  • Wrong I2C address in the code — some modules have address solder pads
  • Multiple devices sharing the same I2C address causing a bus conflict

How to Fix It

  1. Run the I2C scanner sketch

    Open Arduino IDE > File > Examples > Wire > i2c_scanner.
    Upload and open the Serial Monitor at 9600 baud.
    The scanner reports all detected I2C addresses.
    If nothing is found, the wiring is the issue. If the wrong address appears, update your code.

  2. Check SDA and SCL wiring

    On Arduino Uno: SDA is pin A4, SCL is pin A5.
    On Arduino Mega: SDA is pin 20, SCL is pin 21.
    On Arduino Nano: SDA is A4, SCL is A5 (same as Uno).
    Verify the device's SDA pin connects to the Arduino SDA pin, and SCL to SCL.
    Swapping them is the most common wiring mistake.

  3. Add or check pull-up resistors

    The I2C bus requires pull-up resistors on both SDA and SCL lines (typically 4.7k ohm to VCC).
    Many breakout boards include these on-board — check the module documentation.
    If using bare IC chips, you must add external pull-ups.
    Too many devices on one bus can overload the pull-ups — reduce the device count or lower the resistor value.

  4. Check voltage levels

    3.3V devices connected directly to a 5V Arduino I2C bus can be damaged or fail to communicate.
    Use a bi-directional level shifter between a 5V Arduino and 3.3V I2C devices.
    Alternatively, use a 3.3V Arduino (Arduino Pro Mini 3.3V, or any modern Arduino with a 3.3V option).

  5. Check the device address

    Many I2C modules have address jumper pads (labelled A0, A1, A2) that change the address.
    Check the module's datasheet for the default address and any solder bridge options.
    The I2C scanner result tells you the actual address — update your code to match it.