Reference sheet
I2C addresses
What that hex address from a bus scan actually is

I2C address reference
An I2C scanner only ever prints a hex number — this turns that number back into "which module is this, and what else could it be". Addresses are 7-bit (the byte an 8-bit scanner reports, including the R/W bit, is double this). Several entries deliberately overlap: that's not a mistake in this table, it's a real trap on a shared bus, called out in the last column.
| Address | Part | Module / function | Address-select pin | Watch out |
|---|---|---|---|---|
| 0x0C | AK8963 | Magnetometer built into the MPU-9250 | Fixed | Only visible once the MPU-9250’s I2C bypass mode is enabled — invisible on a plain scan |
| 0x18 / 0x19 | LIS3DH | 3-axis accelerometer | SDO/SA0: GND = 0x18, VDD = 0x19 | — |
| 0x1D / 0x53 | ADXL345 | 3-axis accelerometer | ALT ADDRESS: VDD = 0x1D, GND = 0x53 | — |
| 0x1E | HMC5883L / QMC5883L | Magnetometer / digital compass | Fixed | — |
| 0x20–0x27 | PCF8574 | 8-bit I/O expander | A0–A2 (3 pins, 8 combinations) | The common HD44780 I2C LCD backpack normally ships at 0x27 (all three pins pulled high) |
| 0x23 / 0x5C | BH1750 | Ambient light sensor (lux) | ADDR: GND = 0x23, VDD = 0x5C | — |
| 0x29 | VL53L0X / VL53L1X | Time-of-flight distance sensor | Fixed | Reprogrammable at runtime via the XSHUT pin — the usual trick for more than one on a bus |
| 0x29 / 0x39 / 0x49 | TSL2561 | Luminosity sensor | ADDR: GND = 0x29, float = 0x39, VDD = 0x49 | Its GND setting (0x29) collides with the VL53L0X above — check both if a scan shows only one |
| 0x38–0x3F | PCF8574A | 8-bit I/O expander | A0–A2 (3 pins, 8 combinations) | Same chip family as the PCF8574 above, just a different fixed prefix — why one LCD backpack scans at 0x27 and another at 0x3F |
| 0x3C / 0x3D | SSD1306 / SH1106 | OLED display (0.96″/1.3″) | SA0 — usually a solder jumper on the module, not a header pin | — |
| 0x40–0x4F | PCA9685 | 16-channel PWM/servo driver | A0–A5 (default 0x40) | Shares its default address with the INA219 below — a servo-driver-plus-current-sensor build is the classic case that needs one of them moved |
| 0x40–0x4F | INA219 | Current / power sensor | A0/A1, each 4-state (default 0x40) | See the PCA9685 above |
| 0x48–0x4B | ADS1115 / ADS1015 | 16-bit ADC | ADDR: GND = 0x48, VDD = 0x49, SDA = 0x4A, SCL = 0x4B | — |
| 0x48–0x4F | LM75 / LM75A | Temperature sensor | A0–A2 (3 pins) | Overlaps the ADS1115’s own range — the two are easy to confuse on a shared bus |
| 0x50–0x57 | 24Cxx (24LC256, 24LC512…) | Serial EEPROM | A0–A2 (3 pins) | — |
| 0x57 | DS3231 (onboard 24C32) | EEPROM built into most DS3231 RTC modules | Fixed | A second, separate chip on the same breakout as the DS3231 clock itself, at 0x68 below |
| 0x5A | MLX90614 | Non-contact IR thermometer | Fixed | — |
| 0x60 / 0x61 | MCP4725 | 12-bit DAC | A0: GND = 0x60, VDD = 0x61 | Other MCP4725 variants (A1/A2) start from a different base address entirely — check the exact part marking |
| 0x62 | SCD40 / SCD41 | CO₂ + temperature + humidity sensor | Fixed | — |
| 0x68 | DS1307 / DS3231 | Real-time clock | Fixed | The single most commonly reported I2C clash on a hobby bench — see the MPU-6050 row directly below |
| 0x68 / 0x69 | MPU-6050 / MPU-9250 | IMU (accelerometer + gyro) | AD0: GND = 0x68, VDD = 0x69 | Defaults to the exact same address as the DS3231/DS1307 RTC above — a project pairing a clock with a motion sensor needs AD0 pulled high |
| 0x70–0x77 | HT16K33 | LED matrix / 7-segment driver | A0–A2 (3 pins) | Same range as the I2C multiplexer below — check both before assuming a hex address belongs to the display |
| 0x70–0x77 | PCA9548A / TCA9548A | 8-channel I2C multiplexer | A0–A2 (3 pins) | The tool reached for to solve an address clash can itself collide with an HT16K33 display — see above |
| 0x76 / 0x77 | BMP280 / BME280 / BME680 | Barometric pressure (+ humidity/gas on the BME parts) | SDO: GND = 0x76, VDD = 0x77 | — |
| 0x77 | BMP180 | Older barometric pressure sensor | Fixed — no address pin, unlike its BMP280/BME280 successors | Shares 0x77 with a VDD-strapped BMP280/BME280 — only one of the two per bus at that setting |







