Getting wrong values when reading data from sensors with i2C TCA9548A i2C multiplexer getting bad values from BMP180 sensors multuplexer TCA9548A

Thank you very much guys! PaulRB articularly!
It works :wink:

final code:


#include <Wire.h>
#include <SFE_BMP180.h>
 
#define TCAADDR 0x70
  void tcaselect(uint8_t i) {
  if (i > 7) return;
 
  Wire.beginTransmission(TCAADDR);
  Wire.write(1 << i);
  Wire.endTransmission();  
}

 const int maxtca=4; // nombre de voies utilisées


//SFE_BMP180 pressure[tca];
//SFE_BMP180 pressure[0];
//SFE_BMP180 pressure[1];
//SFE_BMP180 pressure[2];
//SFE_BMP180 pressure[3];

SFE_BMP180 pressure[maxtca];

void setup() {
  Serial.begin(9600);
  Wire.begin();
          
  Serial.println("Starting Initialization");     


for (byte tca = 0; tca < maxtca; tca++) {
  
  tcaselect(tca); 
  //Serial.println(tca);  
  pressure[tca].begin();
}
 
//pressure.begin();
//   delay(100);
//pressure_1.begin();
//   delay(100);
//pressure_2.begin();
//   delay(100);
//pressure_3.begin();

Serial.println("Initialization Finished");


}

void loop() 
{ 
  char status;
for (byte tca = 0; tca < maxtca; tca++) { tcaselect(tca); 
  double T,P;

  status = pressure[tca].startTemperature();
  if (status != 0)
  {
    // Wait for the measurement to complete:
    delay(status);

    status = pressure[tca].getTemperature(T);
    if (status != 0)
    {
      // Print out the measurement:
      Serial.print("BMP: ");
      Serial.print(tca);
      Serial.print(" _ T: ");
      Serial.print(T,2);
    Serial.print(" °C, ");

      status = pressure[tca].startPressure(3);
      if (status != 0)
      {
        // Wait for the measurement to complete:
        delay(status);

        status = pressure[tca].getPressure(P,T);
        if (status != 0)
        {
          Serial.print("P: ");
          Serial.print(P,2);
          Serial.println(" mb ");
        }
        else Serial.println("error retrieving pressure measurement\n");
      }
      else Serial.println("error starting pressure measurement\n");
    }
    else Serial.println("error retrieving temperature measurement\n");
  }
  else Serial.println("error starting temperature measurement\n");   
 };  
    
Serial.println("  ");
   delay(1000);   
 
}



and serial monitor:

09:33:56.430 -> Starting Initialization
09:33:56.465 -> Initialization Finished
09:33:56.465 -> BMP: 0 _ T: 21.15 °C, P: 1018.10 mb 
09:33:56.535 -> BMP: 1 _ T: 22.74 °C, P: 1021.37 mb 
09:33:56.570 -> BMP: 2 _ T: 22.46 °C, P: 1016.75 mb 
09:33:56.605 -> BMP: 3 _ T: 24.05 °C, P: 1016.50 mb 
09:33:56.640 ->   
09:33:57.585 -> BMP: 0 _ T: 21.15 °C, P: 1018.06 mb 
09:33:57.655 -> BMP: 1 _ T: 22.74 °C, P: 1021.38 mb 
09:33:57.690 -> BMP: 2 _ T: 22.44 °C, P: 1016.66 mb 
09:33:57.725 -> BMP: 3 _ T: 24.05 °C, P: 1016.51 mb 
09:33:57.760 ->   
09:33:58.740 -> BMP: 0 _ T: 21.15 °C, P: 1018.06 mb 
09:33:58.775 -> BMP: 1 _ T: 22.74 °C, P: 1021.41 mb 
09:33:58.810 -> BMP: 2 _ T: 22.46 °C, P: 1016.75 mb 
09:33:58.845 -> BMP: 3 _ T: 24.02 °C, P: 1016.42 mb