example for unified sensors
This commit is contained in:
parent
610d7292df
commit
ebf5715aba
|
|
@ -61,6 +61,21 @@ Adafruit_BME280::Adafruit_BME280(int8_t cspin, int8_t mosipin, int8_t misopin,
|
||||||
int8_t sckpin)
|
int8_t sckpin)
|
||||||
: _cs(cspin), _mosi(mosipin), _miso(misopin), _sck(sckpin) {}
|
: _cs(cspin), _mosi(mosipin), _miso(misopin), _sck(sckpin) {}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Adafruit_BME280::~Adafruit_BME280(void) {
|
||||||
|
if (temp_sensor) {
|
||||||
|
delete temp_sensor;
|
||||||
|
}
|
||||||
|
if (pressure_sensor) {
|
||||||
|
delete pressure_sensor;
|
||||||
|
}
|
||||||
|
if (humidity_sensor) {
|
||||||
|
delete humidity_sensor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @brief Initialise sensor with given parameters / settings
|
* @brief Initialise sensor with given parameters / settings
|
||||||
* @param addr the I2C address the device can be found on
|
* @param addr the I2C address the device can be found on
|
||||||
|
|
@ -533,6 +548,10 @@ uint32_t Adafruit_BME280::sensorID(void) { return _sensorID; }
|
||||||
@return Adafruit_Sensor pointer to temperature sensor
|
@return Adafruit_Sensor pointer to temperature sensor
|
||||||
*/
|
*/
|
||||||
Adafruit_Sensor *Adafruit_BME280::getTemperatureSensor(void) {
|
Adafruit_Sensor *Adafruit_BME280::getTemperatureSensor(void) {
|
||||||
|
if (! temp_sensor) {
|
||||||
|
temp_sensor = new Adafruit_BME280_Temp(this);
|
||||||
|
}
|
||||||
|
|
||||||
return temp_sensor;
|
return temp_sensor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -542,6 +561,9 @@ Adafruit_Sensor *Adafruit_BME280::getTemperatureSensor(void) {
|
||||||
@return Adafruit_Sensor pointer to pressure sensor
|
@return Adafruit_Sensor pointer to pressure sensor
|
||||||
*/
|
*/
|
||||||
Adafruit_Sensor *Adafruit_BME280::getPressureSensor(void) {
|
Adafruit_Sensor *Adafruit_BME280::getPressureSensor(void) {
|
||||||
|
if (! pressure_sensor) {
|
||||||
|
pressure_sensor = new Adafruit_BME280_Pressure(this);
|
||||||
|
}
|
||||||
return pressure_sensor;
|
return pressure_sensor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -551,6 +573,9 @@ Adafruit_Sensor *Adafruit_BME280::getPressureSensor(void) {
|
||||||
@return Adafruit_Sensor pointer to humidity sensor
|
@return Adafruit_Sensor pointer to humidity sensor
|
||||||
*/
|
*/
|
||||||
Adafruit_Sensor *Adafruit_BME280::getHumiditySensor(void) {
|
Adafruit_Sensor *Adafruit_BME280::getHumiditySensor(void) {
|
||||||
|
if (! humidity_sensor) {
|
||||||
|
humidity_sensor = new Adafruit_BME280_Humidity(this);
|
||||||
|
}
|
||||||
return humidity_sensor;
|
return humidity_sensor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -570,8 +595,8 @@ void Adafruit_BME280_Temp::getSensor(sensor_t *sensor) {
|
||||||
sensor->sensor_id = _sensorID;
|
sensor->sensor_id = _sensorID;
|
||||||
sensor->type = SENSOR_TYPE_AMBIENT_TEMPERATURE;
|
sensor->type = SENSOR_TYPE_AMBIENT_TEMPERATURE;
|
||||||
sensor->min_delay = 0;
|
sensor->min_delay = 0;
|
||||||
sensor->max_value = -40.0; /* Temperature range -40 ~ +85 C */
|
sensor->min_value = -40.0; /* Temperature range -40 ~ +85 C */
|
||||||
sensor->min_value = +85.0;
|
sensor->max_value = +85.0;
|
||||||
sensor->resolution = 0.01; /* 0.01 C */
|
sensor->resolution = 0.01; /* 0.01 C */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -610,8 +635,8 @@ void Adafruit_BME280_Pressure::getSensor(sensor_t *sensor) {
|
||||||
sensor->sensor_id = _sensorID;
|
sensor->sensor_id = _sensorID;
|
||||||
sensor->type = SENSOR_TYPE_PRESSURE;
|
sensor->type = SENSOR_TYPE_PRESSURE;
|
||||||
sensor->min_delay = 0;
|
sensor->min_delay = 0;
|
||||||
sensor->max_value = 300.0; /* 300 ~ 1100 hPa */
|
sensor->min_value = 300.0; /* 300 ~ 1100 hPa */
|
||||||
sensor->min_value = 1100.0;
|
sensor->max_value = 1100.0;
|
||||||
sensor->resolution = 0.012; /* 0.12 hPa relative */
|
sensor->resolution = 0.012; /* 0.12 hPa relative */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ public:
|
||||||
void getSensor(sensor_t *);
|
void getSensor(sensor_t *);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int _sensorID = 0;
|
int _sensorID = 280;
|
||||||
Adafruit_BME280 *_theBME280 = NULL;
|
Adafruit_BME280 *_theBME280 = NULL;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -145,7 +145,7 @@ public:
|
||||||
void getSensor(sensor_t *);
|
void getSensor(sensor_t *);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int _sensorID = 0;
|
int _sensorID = 280;
|
||||||
Adafruit_BME280 *_theBME280 = NULL;
|
Adafruit_BME280 *_theBME280 = NULL;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -214,7 +214,7 @@ public:
|
||||||
Adafruit_BME280();
|
Adafruit_BME280();
|
||||||
Adafruit_BME280(int8_t cspin, SPIClass *theSPI = &SPI);
|
Adafruit_BME280(int8_t cspin, SPIClass *theSPI = &SPI);
|
||||||
Adafruit_BME280(int8_t cspin, int8_t mosipin, int8_t misopin, int8_t sckpin);
|
Adafruit_BME280(int8_t cspin, int8_t mosipin, int8_t misopin, int8_t sckpin);
|
||||||
|
~Adafruit_BME280(void);
|
||||||
bool begin(uint8_t addr = BME280_ADDRESS, TwoWire *theWire = &Wire);
|
bool begin(uint8_t addr = BME280_ADDRESS, TwoWire *theWire = &Wire);
|
||||||
bool init();
|
bool init();
|
||||||
|
|
||||||
|
|
@ -242,8 +242,11 @@ protected:
|
||||||
TwoWire *_wire; //!< pointer to a TwoWire object
|
TwoWire *_wire; //!< pointer to a TwoWire object
|
||||||
SPIClass *_spi; //!< pointer to SPI object
|
SPIClass *_spi; //!< pointer to SPI object
|
||||||
|
|
||||||
|
//!< Adafruit_Sensor compat temperature sensor component
|
||||||
Adafruit_BME280_Temp *temp_sensor = NULL;
|
Adafruit_BME280_Temp *temp_sensor = NULL;
|
||||||
|
//!< Adafruit_Sensor compat pressure sensor component
|
||||||
Adafruit_BME280_Pressure *pressure_sensor = NULL;
|
Adafruit_BME280_Pressure *pressure_sensor = NULL;
|
||||||
|
//!< Adafruit_Sensor compat humidity sensor component
|
||||||
Adafruit_BME280_Humidity *humidity_sensor = NULL;
|
Adafruit_BME280_Humidity *humidity_sensor = NULL;
|
||||||
|
|
||||||
void readCoefficients(void);
|
void readCoefficients(void);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
/***************************************************************************
|
||||||
|
This is a library for the BME280 humidity, temperature & pressure sensor
|
||||||
|
This example shows how to take Sensor Events instead of direct readings
|
||||||
|
|
||||||
|
Designed specifically to work with the Adafruit BME280 Breakout
|
||||||
|
----> http://www.adafruit.com/products/2652
|
||||||
|
|
||||||
|
These sensors use I2C or SPI to communicate, 2 or 4 pins are required
|
||||||
|
to interface.
|
||||||
|
|
||||||
|
Adafruit invests time and resources providing this open source code,
|
||||||
|
please support Adafruit and open-source hardware by purchasing products
|
||||||
|
from Adafruit!
|
||||||
|
|
||||||
|
Written by Limor Fried & Kevin Townsend for Adafruit Industries.
|
||||||
|
BSD license, all text above must be included in any redistribution
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <SPI.h>
|
||||||
|
#include <Adafruit_BME280.h>
|
||||||
|
|
||||||
|
Adafruit_BME280 bme; // use I2C interface
|
||||||
|
Adafruit_Sensor *bme_temp = bme.getTemperatureSensor();
|
||||||
|
Adafruit_Sensor *bme_pressure = bme.getPressureSensor();
|
||||||
|
Adafruit_Sensor *bme_humidity = bme.getHumiditySensor();
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
Serial.println(F("BME280 Sensor event test"));
|
||||||
|
|
||||||
|
if (!bme.begin()) {
|
||||||
|
Serial.println(F("Could not find a valid BME280 sensor, check wiring!"));
|
||||||
|
while (1) delay(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
bme_temp->printSensorDetails();
|
||||||
|
bme_pressure->printSensorDetails();
|
||||||
|
bme_humidity->printSensorDetails();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
sensors_event_t temp_event, pressure_event, humidity_event;
|
||||||
|
bme_temp->getEvent(&temp_event);
|
||||||
|
bme_pressure->getEvent(&pressure_event);
|
||||||
|
bme_humidity->getEvent(&humidity_event);
|
||||||
|
|
||||||
|
Serial.print(F("Temperature = "));
|
||||||
|
Serial.print(temp_event.temperature);
|
||||||
|
Serial.println(" *C");
|
||||||
|
|
||||||
|
Serial.print(F("Humidity = "));
|
||||||
|
Serial.print(humidity_event.relative_humidity);
|
||||||
|
Serial.println(" %");
|
||||||
|
|
||||||
|
Serial.print(F("Pressure = "));
|
||||||
|
Serial.print(pressure_event.pressure);
|
||||||
|
Serial.println(" hPa");
|
||||||
|
|
||||||
|
Serial.println();
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue