#include Adafruit_DPS310 dps; Adafruit_Sensor *dps_temp = dps.getTemperatureSensor(); Adafruit_Sensor *dps_pressure = dps.getPressureSensor(); struct { float pressure; float temperature; } PressTemp; void initPressure() { debugln("Initializing pressure sensor"); if (!dps.begin_I2C()) { Serial.println("Failed to initialize pressure sensor!"); ERR; } // Set high precision dps.configurePressure(DPS310_64HZ, DPS310_64SAMPLES); dps.configureTemperature(DPS310_64HZ, DPS310_64SAMPLES); // dps_temp->printSensorDetails(); // dps_pressure->printSensorDetails(); debugln("Initialized pressure sensor"); } void updatePressure() { sensors_event_t temp, pressure; debugln("Reading pressure & temperature"); // Wait until both are available, as reading temperature // resets pressure availability, but both are still OK // to read. while (!dps.temperatureAvailable() || !dps.pressureAvailable()) { debugln("Waiting..."); delay(1); } // Docs say I need to read temperature first, // though testing seems to show it doesn't matter. dps_temp->getEvent(&temp); PressTemp.temperature = temp.temperature; dps_pressure->getEvent(&pressure); PressTemp.pressure = pressure.pressure; debugln("Got temperature & pressure"); }