Thank you very much guys! PaulRB articularly!
It works ![]()
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