Problema con multiplexor i2c de Adafruit

Muy buenas!

Escribo para comentar un problema que me está empezando a volver loco, pues está paralizando mi proyecto antes aún de que éste empiece...

Tengo un multiplexor i2c de Adafruit. Estoy tratando de probarlo con el código que aparece en esta página:

Además, estoy utilizando el mismo código que podéis ver en ese mismo link. Dicho código sirve para escanear los puertos del multiplexor y ver qué hay en cada uno.

Cuando utilizo el programa, la consola se queda en "TCAscanner ready!" y no hace nada más.

Utilizo un arduino UNO y un arduino lilypad USB, con idénticos resultados.

¿Alguien tiene idea de qué puede pasar?

Gracias de antemano.

Probaste el I2C scanner para comenzar a ver si al menos funciona tu placa?

Sí, el programa lo he probado con dos placas distintas y las placas funcionan.

También he probado los sensores que pretendo conectar al multi y también funcionan.

Bueno analicemos tu código.
Lo primero es que solo hará algo 1 vez. El código esté en el setup asi que lo energizas y lo hace y nada mas a menos que mi visión superficial esté fallando.

/**
 * TCA9548 I2CScanner.pde -- I2C bus scanner for Arduino
 *
 * Based on code c. 2009, Tod E. Kurt, http://todbot.com/blog/
 *
 */

#include "Wire.h"
extern "C" { 
#include "utility/twi.h"  // from Wire library, so we can do bus scanning
}

#define TCAADDR 0x70

void tcaselect(uint8_t i) {
  if (i > 7) return;
 
  Wire.beginTransmission(TCAADDR);
  Wire.write(1 << i);
  Wire.endTransmission();  
}


// standard Arduino setup()
void setup()
{
    while (!Serial);
    delay(1000);

    Wire.begin();
    
    Serial.begin(115200);
    Serial.println("\nTCAScanner ready!");
    
    for (uint8_t t=0; t<8; t++) {
      tcaselect(t);
      Serial.print("TCA Port #"); Serial.println(t);

      for (uint8_t addr = 0; addr<=127; addr++) {
        if (addr == TCAADDR) continue;
      
        uint8_t data;
        if (! twi_writeTo(addr, &data, 0, 1, 1)) {
           Serial.print("Found I2C 0x");  Serial.println(addr,HEX);
        }
      }
    }
    Serial.println("\ndone");
}

void loop() 
{
}

luego de mostrarte TCAscanner Ready! debe ir a esta librería

extern "C" { 
    #include "utility/twi.h"  // from Wire library, so we can do bus scanning
}

que debiste guardar en un archivo twi.h en la carpeta utility
lo tienes asi?

Mmm pues vaya, no tengo ninguna carpeta utility, y al ver que compilaba no pensé que pudiera haber ningún fallo de librerías...

Esa carpeta debería estar en la carpeta arduino ¿no? junto con lib, libraries, etc.

Muchas gracias por las molestias, siempre estás ayudando a la gente. :smiley:

Vale, he buscado bien y sí que tengo el archivo twi.h dentro de la carpeta utility, la cual está dentro de la carpeta de la librería wire.

Por eso no da problemas al compilar. La pregunta es: ¿Por qué demonios no funciona? :sob: