| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #include <Adafruit_DPS310.h>
- Adafruit_DPS310 dps;
- Adafruit_Sensor *dps_temp = dps.getTemperatureSensor();
- Adafruit_Sensor *dps_pressure = dps.getPressureSensor();
- struct {
- float pressure;
- float temperature;
- } PressTemp;
- void initPressure() {
- debug("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);
- debug("Initialized pressure sensor");
- }
- void updatePressure() {
- sensors_event_t temp,
- pressure;
- debug("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()) {
- debug("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;
- debug("Got temperature & pressure");
- }
|