embernet project fire detection system sensor test
Dependencies: mbed CCS811 BME280
Adafruit_SGP30.h@1:91de8a17fbea, 2019-03-08 (annotated)
- Committer:
- cege1808
- Date:
- Fri Mar 08 22:55:26 2019 +0000
- Revision:
- 1:91de8a17fbea
- Parent:
- 0:24692a601d5e
update mbed and sgp sensor;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
cege1808 | 0:24692a601d5e | 1 | /*! |
cege1808 | 0:24692a601d5e | 2 | * @file Adafruit_SGP30.h |
cege1808 | 0:24692a601d5e | 3 | * |
cege1808 | 0:24692a601d5e | 4 | * This is the documentation for Adafruit's SGP30 driver for the |
cege1808 | 0:24692a601d5e | 5 | * Arduino platform. It is designed specifically to work with the |
cege1808 | 0:24692a601d5e | 6 | * Adafruit SGP30 breakout: http://www.adafruit.com/products/3709 |
cege1808 | 0:24692a601d5e | 7 | * |
cege1808 | 0:24692a601d5e | 8 | * These sensors use I2C to communicate, 2 pins (SCL+SDA) are required |
cege1808 | 0:24692a601d5e | 9 | * to interface with the breakout. |
cege1808 | 0:24692a601d5e | 10 | * |
cege1808 | 0:24692a601d5e | 11 | * Adafruit invests time and resources providing this open source code, |
cege1808 | 0:24692a601d5e | 12 | * please support Adafruit and open-source hardware by purchasing |
cege1808 | 0:24692a601d5e | 13 | * products from Adafruit! |
cege1808 | 0:24692a601d5e | 14 | * |
cege1808 | 0:24692a601d5e | 15 | * Written by Ladyada for Adafruit Industries. |
cege1808 | 0:24692a601d5e | 16 | * |
cege1808 | 0:24692a601d5e | 17 | * BSD license, all text here must be included in any redistribution. |
cege1808 | 0:24692a601d5e | 18 | * |
cege1808 | 0:24692a601d5e | 19 | */ |
cege1808 | 0:24692a601d5e | 20 | |
cege1808 | 0:24692a601d5e | 21 | #include "mbed.h" |
cege1808 | 0:24692a601d5e | 22 | |
cege1808 | 0:24692a601d5e | 23 | // the i2c address |
cege1808 | 0:24692a601d5e | 24 | #define SGP30_I2CADDR_DEFAULT 0x58 ///< SGP30 has only one I2C address |
cege1808 | 0:24692a601d5e | 25 | |
cege1808 | 0:24692a601d5e | 26 | // commands and constants |
cege1808 | 0:24692a601d5e | 27 | #define SGP30_FEATURESET 0x0020 ///< The required set for this library |
cege1808 | 0:24692a601d5e | 28 | #define SGP30_CRC8_POLYNOMIAL 0x31 ///< Seed for SGP30's CRC polynomial |
cege1808 | 0:24692a601d5e | 29 | #define SGP30_CRC8_INIT 0xFF ///< Init value for CRC |
cege1808 | 0:24692a601d5e | 30 | #define SGP30_WORD_LEN 2 ///< 2 bytes per word |
cege1808 | 0:24692a601d5e | 31 | |
cege1808 | 0:24692a601d5e | 32 | /**************************************************************************/ |
cege1808 | 0:24692a601d5e | 33 | /*! Class that stores state and functions for interacting with SGP30 Gas Sensor */ |
cege1808 | 0:24692a601d5e | 34 | /**************************************************************************/ |
cege1808 | 0:24692a601d5e | 35 | class Adafruit_SGP30 { |
cege1808 | 0:24692a601d5e | 36 | public: |
cege1808 | 0:24692a601d5e | 37 | Adafruit_SGP30(PinName sda, PinName scl); |
cege1808 | 0:24692a601d5e | 38 | bool begin(); |
cege1808 | 0:24692a601d5e | 39 | bool IAQinit(void); |
cege1808 | 0:24692a601d5e | 40 | bool IAQmeasure(void); |
cege1808 | 0:24692a601d5e | 41 | |
cege1808 | 0:24692a601d5e | 42 | bool getIAQBaseline(uint16_t *eco2_base, uint16_t *tvoc_base); |
cege1808 | 0:24692a601d5e | 43 | bool setIAQBaseline(uint16_t eco2_base, uint16_t tvoc_base); |
cege1808 | 0:24692a601d5e | 44 | bool getIAQRaw(uint16_t *H2_raw, uint16_t *Eth_raw); |
cege1808 | 0:24692a601d5e | 45 | |
cege1808 | 0:24692a601d5e | 46 | /** |
cege1808 | 0:24692a601d5e | 47 | * The last measurement of the IAQ-calculated Total Volatile Organic Compounds in ppb. This value is set when you call {@link IAQmeasure()} |
cege1808 | 0:24692a601d5e | 48 | */ |
cege1808 | 0:24692a601d5e | 49 | uint16_t TVOC; |
cege1808 | 0:24692a601d5e | 50 | |
cege1808 | 0:24692a601d5e | 51 | /** |
cege1808 | 0:24692a601d5e | 52 | * The last measurement of the IAQ-calculated equivalent CO2 in ppm. This value is set when you call {@link IAQmeasure()} |
cege1808 | 0:24692a601d5e | 53 | */ |
cege1808 | 0:24692a601d5e | 54 | uint16_t eCO2; |
cege1808 | 0:24692a601d5e | 55 | |
cege1808 | 0:24692a601d5e | 56 | /** |
cege1808 | 0:24692a601d5e | 57 | * The 48-bit serial number, this value is set when you call {@link begin()} |
cege1808 | 0:24692a601d5e | 58 | */ |
cege1808 | 0:24692a601d5e | 59 | uint16_t serialnumber[3]; |
cege1808 | 0:24692a601d5e | 60 | private: |
cege1808 | 0:24692a601d5e | 61 | I2C _i2c; |
cege1808 | 0:24692a601d5e | 62 | int _i2caddr; |
cege1808 | 0:24692a601d5e | 63 | |
cege1808 | 0:24692a601d5e | 64 | void write(uint8_t address, uint8_t *data, uint8_t n); |
cege1808 | 0:24692a601d5e | 65 | void read(uint8_t address, uint8_t *data, uint8_t n); |
cege1808 | 0:24692a601d5e | 66 | bool readWordFromCommand(uint8_t command[], uint8_t commandLength, uint16_t delay, uint16_t *readdata = NULL, uint8_t readlen = 0); |
cege1808 | 0:24692a601d5e | 67 | uint8_t generateCRC(uint8_t data[], uint8_t datalen); |
cege1808 | 0:24692a601d5e | 68 | }; |