Complete library for whole scientific pre-final
Dependencies: BOX_1
ENVIROMENTAL/VEML6070.h@0:f8a9cceb4186, 2019-06-10 (annotated)
- Committer:
- Alessio_Zaino
- Date:
- Mon Jun 10 12:50:02 2019 +0000
- Revision:
- 0:f8a9cceb4186
still developing
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Alessio_Zaino | 0:f8a9cceb4186 | 1 | /*************************************************** |
Alessio_Zaino | 0:f8a9cceb4186 | 2 | This is a library for the VEML6070 UV-A Sensor |
Alessio_Zaino | 0:f8a9cceb4186 | 3 | |
Alessio_Zaino | 0:f8a9cceb4186 | 4 | Works with the VEML6070 sensor from Adafruit |
Alessio_Zaino | 0:f8a9cceb4186 | 5 | ----> https://www.adafruit.com/products/2899 |
Alessio_Zaino | 0:f8a9cceb4186 | 6 | Or knock-off sensors from aliexpress |
Alessio_Zaino | 0:f8a9cceb4186 | 7 | |
Alessio_Zaino | 0:f8a9cceb4186 | 8 | These sensors use I2C to communicate, 2 pins are required to |
Alessio_Zaino | 0:f8a9cceb4186 | 9 | interface |
Alessio_Zaino | 0:f8a9cceb4186 | 10 | |
Alessio_Zaino | 0:f8a9cceb4186 | 11 | The VEML6070 is capable of alerting when UV levels rise past a pre-set level. |
Alessio_Zaino | 0:f8a9cceb4186 | 12 | It uses a "ACK" pin, and the SMBus Alert Response Address must be read to |
Alessio_Zaino | 0:f8a9cceb4186 | 13 | clear the alert. |
Alessio_Zaino | 0:f8a9cceb4186 | 14 | If alert is turned on, you must clear the alert bit before you read/write the |
Alessio_Zaino | 0:f8a9cceb4186 | 15 | sensor. |
Alessio_Zaino | 0:f8a9cceb4186 | 16 | |
Alessio_Zaino | 0:f8a9cceb4186 | 17 | 06/09/2017 - Initial mbed driver by Scott Roberts |
Alessio_Zaino | 0:f8a9cceb4186 | 18 | ****************************************************/ |
Alessio_Zaino | 0:f8a9cceb4186 | 19 | |
Alessio_Zaino | 0:f8a9cceb4186 | 20 | |
Alessio_Zaino | 0:f8a9cceb4186 | 21 | #ifndef VEML6070_H |
Alessio_Zaino | 0:f8a9cceb4186 | 22 | #define VEML6070_H |
Alessio_Zaino | 0:f8a9cceb4186 | 23 | |
Alessio_Zaino | 0:f8a9cceb4186 | 24 | #include "mbed.h" |
Alessio_Zaino | 0:f8a9cceb4186 | 25 | |
Alessio_Zaino | 0:f8a9cceb4186 | 26 | // really unusual way of getting data, your read from two different addrs! |
Alessio_Zaino | 0:f8a9cceb4186 | 27 | #define VEML6070_ADDR_H (0x39 << 1) |
Alessio_Zaino | 0:f8a9cceb4186 | 28 | #define VEML6070_ADDR_L (0x38 << 1) |
Alessio_Zaino | 0:f8a9cceb4186 | 29 | |
Alessio_Zaino | 0:f8a9cceb4186 | 30 | // three different integration times |
Alessio_Zaino | 0:f8a9cceb4186 | 31 | typedef enum veml6070_integrationtime { |
Alessio_Zaino | 0:f8a9cceb4186 | 32 | VEML6070_HALF_T, |
Alessio_Zaino | 0:f8a9cceb4186 | 33 | VEML6070_1_T, |
Alessio_Zaino | 0:f8a9cceb4186 | 34 | VEML6070_2_T, |
Alessio_Zaino | 0:f8a9cceb4186 | 35 | VEML6070_4_T, |
Alessio_Zaino | 0:f8a9cceb4186 | 36 | } veml6070_integrationtime_t; |
Alessio_Zaino | 0:f8a9cceb4186 | 37 | |
Alessio_Zaino | 0:f8a9cceb4186 | 38 | |
Alessio_Zaino | 0:f8a9cceb4186 | 39 | class VEML6070 |
Alessio_Zaino | 0:f8a9cceb4186 | 40 | { |
Alessio_Zaino | 0:f8a9cceb4186 | 41 | public: |
Alessio_Zaino | 0:f8a9cceb4186 | 42 | VEML6070(I2C& p_i2c); |
Alessio_Zaino | 0:f8a9cceb4186 | 43 | void begin(veml6070_integrationtime_t itime); |
Alessio_Zaino | 0:f8a9cceb4186 | 44 | uint16_t readUV(void); |
Alessio_Zaino | 0:f8a9cceb4186 | 45 | protected: |
Alessio_Zaino | 0:f8a9cceb4186 | 46 | I2C _i2c; |
Alessio_Zaino | 0:f8a9cceb4186 | 47 | private: |
Alessio_Zaino | 0:f8a9cceb4186 | 48 | char dt[2]; |
Alessio_Zaino | 0:f8a9cceb4186 | 49 | }; |
Alessio_Zaino | 0:f8a9cceb4186 | 50 | #endif |