EDITAR: Corrí un programa de escaneo de bus i2c y detecté un dispositivo en 0x70 (el mux). Conecté el dispositivo con el que estoy intentando conectar directamente al bus i2c, ejecuté este código y funcionó exactamente como se esperaba. Pero aún cuando ejecuto este código con el dispositivo conectado a uno de los canales mux, no funciona. ¡Estoy perplejo!
Estoy intentando controlar un dispositivo I²C a través de un multiplexor en un ESP8266. A continuación se muestra el circuito que estoy usando y el código. Este código exacto funciona si cambio el dispositivo para que se conecte directamente a SDA y SCL (sin pasar por el multiplexor). Desafortunadamente, si se conecta a través del multiplexor, el código muestra "No se encontró TCS34725". He intentado esto en dos tableros distintos con los mismos resultados en ambos.
Elreinicio(N$5)sellevaa3.3vatravésdeunaresistenciade10k.
#include <Wire.h>
#include <Adafruit_TCS34725.h>
#define TCAADDR 0x70
uint16_t clear, red, green, blue;
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_2_4MS, TCS34725_GAIN_1X);
void setup() {
Wire.begin();
Serial.begin(115200);
delay(10);
Serial.println("\r\n");
tcaselect(6);
if (tcs.begin()) {
Serial.println("Found sensor");
} else {
Serial.println("No TCS34725 found ... check your connections");
while (1); // halt!
}
}
void tcaselect(uint8_t i) {
if (i > 7) return;
Wire.beginTransmission(TCAADDR);
Wire.write(1 << i);
Wire.endTransmission();
}
¿Alguna idea sobre por qué esto no funciona?