Adafruit TSL2591 sensor
TSL2591.h@4:66ce66d4c07c, 2016-04-04 (annotated)
- Committer:
- 12104404
- Date:
- Mon Apr 04 09:09:12 2016 +0000
- Revision:
- 4:66ce66d4c07c
- Parent:
- 3:fecb1929cbef
<<1
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| 12104404 | 0:815555c72774 | 1 | #ifndef TSL2591_H |
| 12104404 | 0:815555c72774 | 2 | #define TSL2591_H |
| 12104404 | 0:815555c72774 | 3 | |
| 12104404 | 0:815555c72774 | 4 | #include "mbed.h" |
| 12104404 | 0:815555c72774 | 5 | |
| 12104404 | 0:815555c72774 | 6 | #define TSL2591_ADDR (0x29) |
| 12104404 | 0:815555c72774 | 7 | #define TSL2591_ID (0x50) |
| 12104404 | 0:815555c72774 | 8 | |
| 12104404 | 0:815555c72774 | 9 | #define TSL2591_CMD_BIT (0xA0) |
| 12104404 | 0:815555c72774 | 10 | |
| 12104404 | 0:815555c72774 | 11 | #define TSL2591_EN_NPIEN (0x80) |
| 12104404 | 0:815555c72774 | 12 | #define TSL2591_EN_SAI (0x40) |
| 12104404 | 0:815555c72774 | 13 | #define TSL2591_EN_AIEN (0x10) |
| 12104404 | 0:815555c72774 | 14 | #define TSL2591_EN_AEN (0x02) |
| 12104404 | 0:815555c72774 | 15 | #define TSL2591_EN_PON (0x01) |
| 12104404 | 0:815555c72774 | 16 | #define TSL2591_EN_POFF (0x00) |
| 12104404 | 0:815555c72774 | 17 | |
| 12104404 | 2:dd10c541a3dc | 18 | #define TSL2591_LUX_DF (408.0F) |
| 12104404 | 2:dd10c541a3dc | 19 | #define TSL2591_LUX_COEFB (1.64F) // CH0 coefficient |
| 12104404 | 2:dd10c541a3dc | 20 | #define TSL2591_LUX_COEFC (0.59F) // CH1 coefficient A |
| 12104404 | 2:dd10c541a3dc | 21 | #define TSL2591_LUX_COEFD (0.86F) // CH2 coefficient B |
| 12104404 | 2:dd10c541a3dc | 22 | |
| 12104404 | 0:815555c72774 | 23 | enum { |
| 12104404 | 0:815555c72774 | 24 | TSL2591_REG_ENABLE = 0x00, |
| 12104404 | 0:815555c72774 | 25 | TSL2591_REG_CONTROL = 0x01, |
| 12104404 | 0:815555c72774 | 26 | TSL2591_REG_THRES_AILTL = 0x04, |
| 12104404 | 0:815555c72774 | 27 | TSL2591_REG_THRES_AILTH = 0x05, |
| 12104404 | 0:815555c72774 | 28 | TSL2591_REG_THRES_AIHTL = 0x06, |
| 12104404 | 0:815555c72774 | 29 | TSL2591_REG_THRES_AIHTH = 0x07, |
| 12104404 | 0:815555c72774 | 30 | TSL2591_REG_THRES_NPAILTL = 0x08, |
| 12104404 | 0:815555c72774 | 31 | TSL2591_REG_THRES_NPAILTH = 0x09, |
| 12104404 | 0:815555c72774 | 32 | TSL2591_REG_THRES_NPAIHTL = 0x0A, |
| 12104404 | 0:815555c72774 | 33 | TSL2591_REG_THRES_NPAIHTH = 0x0B, |
| 12104404 | 0:815555c72774 | 34 | TSL2591_REG_PERSIST = 0x0C, |
| 12104404 | 0:815555c72774 | 35 | TSL2591_REG_PID = 0x11, |
| 12104404 | 0:815555c72774 | 36 | TSL2591_REG_ID = 0x12, |
| 12104404 | 0:815555c72774 | 37 | TSL2591_REG_STATUS = 0x13, |
| 12104404 | 0:815555c72774 | 38 | TSL2591_REG_CHAN0_L = 0x14, |
| 12104404 | 0:815555c72774 | 39 | TSL2591_REG_CHAN0_H = 0x15, |
| 12104404 | 0:815555c72774 | 40 | TSL2591_REG_CHAN1_L = 0x16, |
| 12104404 | 0:815555c72774 | 41 | TSL2591_REG_CHAN1_H = 0x17, |
| 12104404 | 0:815555c72774 | 42 | }; |
| 12104404 | 0:815555c72774 | 43 | |
| 12104404 | 0:815555c72774 | 44 | typedef enum { |
| 12104404 | 0:815555c72774 | 45 | TSL2591_GAIN_LOW = 0x00, |
| 12104404 | 0:815555c72774 | 46 | TSL2591_GAIN_MED = 0x01, |
| 12104404 | 0:815555c72774 | 47 | TSL2591_GAIN_HIGH = 0x02, |
| 12104404 | 0:815555c72774 | 48 | TSL2591_GAIN_MAX = 0x03, |
| 12104404 | 0:815555c72774 | 49 | } tsl2591Gain_t; |
| 12104404 | 0:815555c72774 | 50 | |
| 12104404 | 0:815555c72774 | 51 | typedef enum { |
| 12104404 | 0:815555c72774 | 52 | TSL2591_INTT_100MS = 0x00, |
| 12104404 | 0:815555c72774 | 53 | TSL2591_INTT_200MS = 0x01, |
| 12104404 | 0:815555c72774 | 54 | TSL2591_INTT_300MS = 0x02, |
| 12104404 | 0:815555c72774 | 55 | TSL2591_INTT_400MS = 0x03, |
| 12104404 | 0:815555c72774 | 56 | TSL2591_INTT_500MS = 0x04, |
| 12104404 | 0:815555c72774 | 57 | TSL2591_INTT_600MS = 0x05, |
| 12104404 | 0:815555c72774 | 58 | } tsl2591IntegrationTime_t; |
| 12104404 | 0:815555c72774 | 59 | |
| 12104404 | 0:815555c72774 | 60 | typedef enum { |
| 12104404 | 0:815555c72774 | 61 | TSL2591_PER_EVERY = 0x00, |
| 12104404 | 0:815555c72774 | 62 | TSL2591_PER_ANY = 0x01, |
| 12104404 | 0:815555c72774 | 63 | TSL2591_PER_2 = 0x02, |
| 12104404 | 0:815555c72774 | 64 | TSL2591_PER_3 = 0x03, |
| 12104404 | 0:815555c72774 | 65 | TSL2591_PER_5 = 0x04, |
| 12104404 | 0:815555c72774 | 66 | TSL2591_PER_10 = 0x05, |
| 12104404 | 0:815555c72774 | 67 | TSL2591_PER_15 = 0x06, |
| 12104404 | 0:815555c72774 | 68 | TSL2591_PER_20 = 0x07, |
| 12104404 | 0:815555c72774 | 69 | TSL2591_PER_25 = 0x08, |
| 12104404 | 0:815555c72774 | 70 | TSL2591_PER_30 = 0x09, |
| 12104404 | 0:815555c72774 | 71 | TSL2591_PER_35 = 0x0A, |
| 12104404 | 0:815555c72774 | 72 | TSL2591_PER_40 = 0x0B, |
| 12104404 | 0:815555c72774 | 73 | TSL2591_PER_45 = 0x0C, |
| 12104404 | 0:815555c72774 | 74 | TSL2591_PER_50 = 0x0D, |
| 12104404 | 0:815555c72774 | 75 | TSL2591_PER_55 = 0x0E, |
| 12104404 | 0:815555c72774 | 76 | TSL2591_PER_60 = 0x0F, |
| 12104404 | 0:815555c72774 | 77 | } tsl2591Persist_t; |
| 12104404 | 0:815555c72774 | 78 | |
| 12104404 | 0:815555c72774 | 79 | class TSL2591 |
| 12104404 | 0:815555c72774 | 80 | { |
| 12104404 | 0:815555c72774 | 81 | public: |
| 12104404 | 3:fecb1929cbef | 82 | TSL2591(I2C& tsl2591_i2c, uint8_t tsl2591_addr=TSL2591_ADDR); |
| 12104404 | 0:815555c72774 | 83 | bool init(void); |
| 12104404 | 0:815555c72774 | 84 | void enable(void); |
| 12104404 | 0:815555c72774 | 85 | void disable(void); |
| 12104404 | 0:815555c72774 | 86 | void setGain(tsl2591Gain_t gain); |
| 12104404 | 1:308cc5302475 | 87 | void setTime(tsl2591IntegrationTime_t integ); |
| 12104404 | 0:815555c72774 | 88 | void getALS(void); |
| 12104404 | 2:dd10c541a3dc | 89 | void calcLux(void); |
| 12104404 | 3:fecb1929cbef | 90 | volatile uint32_t rawALS; |
| 12104404 | 2:dd10c541a3dc | 91 | volatile uint16_t ir; |
| 12104404 | 2:dd10c541a3dc | 92 | volatile uint16_t full; |
| 12104404 | 3:fecb1929cbef | 93 | volatile uint16_t visible; |
| 12104404 | 2:dd10c541a3dc | 94 | volatile uint32_t lux; |
| 12104404 | 0:815555c72774 | 95 | |
| 12104404 | 0:815555c72774 | 96 | protected: |
| 12104404 | 0:815555c72774 | 97 | I2C _i2c; |
| 12104404 | 0:815555c72774 | 98 | uint8_t _addr; |
| 12104404 | 0:815555c72774 | 99 | bool _init; |
| 12104404 | 0:815555c72774 | 100 | tsl2591Gain_t _gain; |
| 12104404 | 0:815555c72774 | 101 | tsl2591IntegrationTime_t _integ; |
| 12104404 | 0:815555c72774 | 102 | }; |
| 12104404 | 0:815555c72774 | 103 | |
| 12104404 | 0:815555c72774 | 104 | #endif |