//#include //TwoWire myWire1 (1, I2C_FAST_MODE); // to use the I2C 1 //TwoWire myWire2 (2, I2C_FAST_MODE); // to use the I2C 2 #include #include #include "Adafruit_BME680.h" #define SEALEVELPRESSURE_HPA (1013.25) Adafruit_BME680 bme; // I2C void setup() { Serial.begin(115200); delay(2000); Wire.begin(); delay(10); Wire1.begin(8); Wire1.onRequest(requestEvent); // register event Wire1.onReceive(receiveEvent); // register event delay(10); Serial.print("init BME280..."); if (!bme.begin(0x76)) { Serial.println("Could not find a valid BME680 sensor, check wiring!"); //while (1); } else { Serial.println("begin init ok!"); } Serial.println("Could wiring2!"); // Set up oversampling and filter initialization bme.setTemperatureOversampling(BME680_OS_8X); bme.setHumidityOversampling(BME680_OS_2X); bme.setPressureOversampling(BME680_OS_4X); bme.setIIRFilterSize(BME680_FILTER_SIZE_3); bme.setGasHeater(320, 150); // 320*C for 150 ms } void loop() { if (! bme.performReading()) { Serial.println("Failed to perform reading :("); return; } Serial.print("Temperature = "); Serial.print(bme.temperature); Serial.println(" *C"); Serial.print("Pressure = "); Serial.print(bme.pressure / 100.0); Serial.println(" hPa"); Serial.print("Humidity = "); Serial.print(bme.humidity); Serial.println(" %"); Serial.print("Gas = "); Serial.print(bme.gas_resistance / 1000.0); Serial.println(" KOhms"); Serial.print("Approx. Altitude = "); Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); Serial.println(" m"); Serial.println(); delay(2000); } //------------------------------------ void requestEvent() { Wire.write("hello "); // respond with message of 6 bytes // as expected by master } void receiveEvent(int howMany){ while(1 < Wire.available()){ // loop through all but the last char c = Wire.read(); // receive byte as a character Serial.print(c); // print the character } int x = Wire.read(); // receive byte as an integer Serial.println(x); // print the integer }