Complete library for whole scientific

Dependencies:   BOX_1

Committer:
Alessio_Zaino
Date:
Mon Jun 10 13:11:48 2019 +0000
Revision:
1:dda01a024d6c
Parent:
0:f8a9cceb4186
j

Who changed what in which revision?

UserRevisionLine numberNew 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