
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(128, 64, &Wire, 4);
Adafruit_BME280 bme;
float temp, hum, pressure;

void TCA9548A(uint8_t bus)
{
  Wire.beginTransmission(0x70);
  Wire.write(1 << bus);
  Wire.endTransmission();
}

void setup()
{
  TCA9548A(1);
  bme.begin(0x76, &Wire);
    
  TCA9548A(2);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.setTextSize(4);
  display.setTextColor(WHITE);
  display.setCursor(18,20);
  display.println("HUM.");// Print text
  display.display();

  TCA9548A(3);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.setTextSize(4);
  display.setTextColor(WHITE);
  display.setCursor(10,20);
  display.println("PRES");// Print text
  display.display();
  
  TCA9548A(4);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.setTextSize(4);
  display.setTextColor(WHITE);
  display.setCursor(10,20);
  display.println("TEMP.");// Print text
  display.display();
  delay(5000);
 
}

void loop()
{
  TCA9548A(1);
  temp = bme.readTemperature();
  hum = bme.readHumidity();
  pressure = bme.seaLevelForAltitude(700.0, bme.readPressure())/100.0;

  TCA9548A(2);
  display.setTextColor(WHITE); display.clearDisplay();
  display.setTextSize(2); display.setCursor(0,0); display.print("Humidity %");
  display.setTextSize(3); display.setCursor(20,30);
  display.print(hum);
  display.display();

  TCA9548A(3);
  display.setTextColor(WHITE); display.clearDisplay();
  display.setTextSize(2); display.setCursor(5,0); display.print("Press. hPa");
  display.setTextSize(3); display.setCursor(0,30);
  display.print(pressure);
  display.display();
  
  TCA9548A(4);
  display.setTextColor(WHITE); display.clearDisplay();
  display.setTextSize(2); display.setCursor(30,0); display.print("Temp C");
  display.setTextSize(3); display.setCursor(20,30);
  display.print(temp);
  display.display();
  
  delay(1000);
}