Cómo fijar la dirección
Conecta los pines de dirección así:
A5…A0 → 0x40–0x77 (0x70 = All Call)
Al encenderse responde también a la dirección All Call 0x70, que choca con un TCA9548A en su dirección por defecto. Desactiva All Call en el registro MODE1 o mueve el multiplexor.
Dispositivos que usan las mismas direcciones
Dos dispositivos del mismo bus no pueden responder en la misma dirección. Estos módulos de nuestra lista usan al menos una de estas direcciones:
| Dispositivo | Qué es | Dirección compartida |
|---|---|---|
| HDC1080 | sensor de temperatura y humedad | 0x40 |
| HTU21D | sensor de temperatura y humedad | 0x40 |
| INA219 | monitor de corriente, tensión y potencia | 0x40–0x4F (16) |
| INA226 | monitor de corriente, tensión y potencia | 0x40–0x4F (16) |
| INA260 | monitor de corriente, tensión y potencia con shunt integrado | 0x40–0x4F (16) |
| INA3221 | monitor de corriente y tensión de 3 canales | 0x40, 0x41, 0x42, 0x43 |
| Si7021 | sensor de temperatura y humedad | 0x40 |
| OPT3001 | sensor de luz ambiental | 0x44, 0x45, 0x46, 0x47 |
| SHT30 / SHT31 / SHT35 | sensor de temperatura y humedad | 0x44, 0x45 |
| SHT40 / SHT41 / SHT43 / SHT45 (SHT4x) | sensor de temperatura y humedad | 0x44, 0x45, 0x46 |
Mostrar los 60 dispositivos
| Dispositivo | Qué es | Dirección compartida |
|---|---|---|
| ADS1015 | ADC de 12 bits y 4 canales | 0x48, 0x49, 0x4A, 0x4B |
| ADS1115 | ADC de 16 bits y 4 canales | 0x48, 0x49, 0x4A, 0x4B |
| ADS7830 | ADC de 8 bits y 8 canales | 0x48, 0x49, 0x4A, 0x4B |
| LM75B | sensor de temperatura digital / termostato | 0x48–0x4F (8) |
| PCF8591 | ADC de 8 bits y 4 canales + 1 DAC | 0x48–0x4F (8) |
| TMP102 | sensor de temperatura digital | 0x48, 0x49, 0x4A, 0x4B |
| TMP117 | sensor de temperatura digital de alta precisión | 0x48, 0x49, 0x4A, 0x4B |
| TSL2561 | sensor de luz ambiental (visible e infrarrojo) | 0x49 |
| 24LC256 / 24AA256 / 24FC256 | EEPROM I²C de 256 Kbit | 0x50–0x57 (8) |
| AT24C32 | EEPROM I²C de 32 Kbit | 0x50–0x57 (8) |
| PCF85063A | reloj en tiempo real (RTC) | 0x51 |
| PCF8563 | reloj en tiempo real (RTC) | 0x51 |
| ENS160 | sensor de calidad del aire de óxido metálico (TVOC/eCO₂/AQI) | 0x52, 0x53 |
| ADXL345 | acelerómetro de 3 ejes | 0x53 |
| BQ27441-G1 | indicador de carga para una celda Li-ion | 0x55 |
| MAX30100 | pulsioxímetro y sensor de pulso | 0x57 |
| MAX30102 | pulsioxímetro y sensor de pulso | 0x57 |
| SGP30 | sensor de gas VOC y eCO₂ | 0x58 |
| SGP40 | sensor de gas, índice VOC | 0x59 |
| SGP41 | sensor de gas, índices VOC y NOx | 0x59 |
| CCS811 | sensor de gas eCO₂ / TVOC | 0x5A, 0x5B |
| MLX90614 | termómetro de infrarrojos sin contacto | 0x5A |
| MPR121 | controlador táctil capacitivo de 12 canales | 0x5A, 0x5B, 0x5C, 0x5D |
| BH1750FVI (BH1750) | sensor de luz ambiental | 0x5C |
| LPS22HB | sensor de presión barométrica | 0x5C, 0x5D |
| GT911 | controlador de pantalla táctil capacitiva de 5 puntos | 0x5D |
| MCP4725 | DAC de 12 bits con EEPROM | 0x60–0x67 (8) |
| MCP4728 | DAC de 12 bits y 4 canales con EEPROM | 0x60–0x67 (8) |
| SCD30 | módulo de CO₂ NDIR, temperatura y humedad | 0x61 |
| SCD40 / SCD41 | sensor de CO₂ fotoacústico, temperatura y humedad | 0x62 |
| BMI270 | IMU de 6 ejes | 0x68, 0x69 |
| DS1307 | reloj en tiempo real (RTC) | 0x68 |
| DS3231 | reloj en tiempo real compensado en temperatura | 0x68 |
| MPU-6050 | acelerómetro + giroscopio de 6 ejes | 0x68, 0x69 |
| MPU-6886 | IMU de 6 ejes | 0x68, 0x69 |
| MPU-9250 | IMU de 9 ejes (acelerómetro, giroscopio, magnetómetro AK8963) | 0x68, 0x69 |
| PCF8523 | reloj en tiempo real (RTC) | 0x68 |
| SEN50 / SEN54 / SEN55 | módulo de partículas en suspensión, VOC/NOx, temperatura y humedad | 0x69 |
| HT16K33 | controlador de matrices LED 16×8 con lectura de teclado | 0x70–0x77 (8) |
| SHTC3 | sensor de temperatura y humedad | 0x70 |
| SX1509 | expansor de E/S de 16 canales con driver de LED y controlador de teclado | 0x70, 0x71 |
| TCA9548A | multiplexor I²C de 8 canales | 0x70–0x77 (8) |
| IP5306 | SoC para power bank (cargador + elevador), versión I²C | 0x75 |
| BME280 | sensor de temperatura, humedad y presión | 0x76, 0x77 |
| BME680 | sensor de gas (VOC), temperatura, humedad y presión | 0x76, 0x77 |
| BME688 | sensor de gas con IA, temperatura, humedad y presión | 0x76, 0x77 |
| BMP280 | sensor de presión y temperatura | 0x76, 0x77 |
| BMP388 | sensor de presión y temperatura | 0x76, 0x77 |
| MS5611-01BA | sensor de presión barométrica (altímetro) | 0x76, 0x77 |
| BMP180 | sensor de presión y temperatura | 0x77 |
Si dos acaban en la misma dirección, mueve uno con su pin de dirección, pon uno detrás de un multiplexor TCA9548A (0x70–0x77) o usa un segundo bus I²C: el ESP32, el ESP32-S3 y el RP2040 tienen dos controladores I²C (el ESP32-C3 tiene uno).
Comprobar todo el bus →Añade el PCA9685 y el resto de tus módulos: la herramienta encuentra los conflictos, propone direcciones libres y calcula las pull-ups.
Dirección de 7 y de 8 bits
Las direcciones I²C tienen 7 bits. Algunas hojas de datos y bibliotecas las escriben como números de 8 bits, con el bit de lectura/escritura añadido a la derecha: por eso el mismo chip puede aparecer como 0x40 o como 0x80. La biblioteca Wire de Arduino y ESPHome usan la forma de 7 bits.
Sus direcciones van de 0x40 a 0x77 en la forma de 7 bits, es decir, de 0x80 a 0xEE como direcciones de escritura de 8 bits.
Comprueba que responde
Sube este sketch con el PCA9685 conectado a SDA y SCL: prueba todas las direcciones que puede usar el chip y muestra en el monitor serie la que responde. En el ESP32 los pines por defecto son GPIO21 (SDA) y GPIO22 (SCL); en un Arduino Uno, A4 y A5.
#include <Wire.h>
const byte ADDRS[] = {
0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77
};
void setup() {
Serial.begin(115200);
Wire.begin();
for (byte a : ADDRS) {
Wire.beginTransmission(a);
if (Wire.endTransmission() == 0) {
Serial.print("PCA9685 responde en 0x");
if (a < 0x10) Serial.print('0');
Serial.println(a, HEX);
return;
}
}
Serial.println("Sin respuesta: revisa el cableado");
}
void loop() {}
En ESPHome el bus se escanea al arrancar (scan: true es el valor por defecto): el log muestra todas las direcciones que responden.
i2c:
sda: GPIO21
scl: GPIO22
scan: true
Resistencias de pull-up
SDA y SCL necesitan resistencias de pull-up a la alimentación. Muchos módulos ya las llevan, a menudo de 4,7 kΩ o 10 kΩ, y con varios módulos en el bus se suman en paralelo. La herramienta de direcciones I²C calcula el rango admitido para la tensión y la velocidad de tu bus.
Preguntas frecuentes
¿Cuál es la dirección I2C del PCA9685?
0x40–0x77, según el cableado: A5…A0 → 0x40–0x77 (0x70 = All Call).
¿Puedo usar más de un PCA9685 en el mismo bus?
Sí, hasta 55, cada uno con una dirección distinta. Para usar más, recurre a un multiplexor TCA9548A o a un segundo bus I²C.
¿Por qué el PCA9685 no aparece al escanear el bus I2C?
Revisa, por este orden: que SDA y SCL no estén intercambiados; que las placas compartan masa; que haya resistencias de pull-up en SDA y SCL; que el módulo esté alimentado a la tensión que le corresponde; que ningún pin de dirección quede sin conectar; y que tu código use la dirección de 7 bits (0x40), no la de 8 bits (0x80).
Dispositivos similares
MCP23008 MCP23017 PCF8574 PCF8574A PCF8575 SX1509 TCA9548A TCA9555
Direcciones comprobadas en la hoja de datos del PCA9685.