Edwin Cho / Mbed 2 deprecated TSL2591

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers TSL2591.h Source File

TSL2591.h

00001 #ifndef TSL2591_H
00002 #define TSL2591_H
00003 
00004 #include "mbed.h"
00005 
00006 #define TSL2591_ADDR        (0x29)
00007 #define TSL2591_ID          (0x50)
00008 
00009 #define TSL2591_CMD_BIT     (0xA0)
00010 
00011 #define TSL2591_EN_NPIEN    (0x80)
00012 #define TSL2591_EN_SAI      (0x40)
00013 #define TSL2591_EN_AIEN     (0x10)
00014 #define TSL2591_EN_AEN      (0x02)
00015 #define TSL2591_EN_PON      (0x01)
00016 #define TSL2591_EN_POFF     (0x00)
00017 
00018 #define TSL2591_LUX_DF      (408.0F)
00019 #define TSL2591_LUX_COEFB   (1.64F)  // CH0 coefficient 
00020 #define TSL2591_LUX_COEFC   (0.59F)  // CH1 coefficient A
00021 #define TSL2591_LUX_COEFD   (0.86F)  // CH2 coefficient B
00022 
00023 enum {
00024     TSL2591_REG_ENABLE          = 0x00,
00025     TSL2591_REG_CONTROL         = 0x01,
00026     TSL2591_REG_THRES_AILTL     = 0x04,
00027     TSL2591_REG_THRES_AILTH     = 0x05,
00028     TSL2591_REG_THRES_AIHTL     = 0x06,
00029     TSL2591_REG_THRES_AIHTH     = 0x07,
00030     TSL2591_REG_THRES_NPAILTL   = 0x08,
00031     TSL2591_REG_THRES_NPAILTH   = 0x09,
00032     TSL2591_REG_THRES_NPAIHTL   = 0x0A,
00033     TSL2591_REG_THRES_NPAIHTH   = 0x0B,
00034     TSL2591_REG_PERSIST         = 0x0C,
00035     TSL2591_REG_PID             = 0x11,
00036     TSL2591_REG_ID              = 0x12,
00037     TSL2591_REG_STATUS          = 0x13,
00038     TSL2591_REG_CHAN0_L         = 0x14,
00039     TSL2591_REG_CHAN0_H         = 0x15,
00040     TSL2591_REG_CHAN1_L         = 0x16,
00041     TSL2591_REG_CHAN1_H         = 0x17,
00042 };
00043 
00044 typedef enum {
00045     TSL2591_GAIN_LOW    = 0x00,
00046     TSL2591_GAIN_MED    = 0x01,
00047     TSL2591_GAIN_HIGH   = 0x02,
00048     TSL2591_GAIN_MAX    = 0x03,
00049 } tsl2591Gain_t;
00050 
00051 typedef enum {
00052     TSL2591_INTT_100MS  = 0x00,
00053     TSL2591_INTT_200MS  = 0x01,
00054     TSL2591_INTT_300MS  = 0x02,
00055     TSL2591_INTT_400MS  = 0x03,
00056     TSL2591_INTT_500MS  = 0x04,
00057     TSL2591_INTT_600MS  = 0x05,
00058 } tsl2591IntegrationTime_t;
00059 
00060 typedef enum {
00061     TSL2591_PER_EVERY   = 0x00,
00062     TSL2591_PER_ANY     = 0x01,
00063     TSL2591_PER_2       = 0x02,
00064     TSL2591_PER_3       = 0x03,
00065     TSL2591_PER_5       = 0x04,
00066     TSL2591_PER_10      = 0x05,
00067     TSL2591_PER_15      = 0x06,
00068     TSL2591_PER_20      = 0x07,
00069     TSL2591_PER_25      = 0x08,
00070     TSL2591_PER_30      = 0x09,
00071     TSL2591_PER_35      = 0x0A,
00072     TSL2591_PER_40      = 0x0B,
00073     TSL2591_PER_45      = 0x0C,
00074     TSL2591_PER_50      = 0x0D,
00075     TSL2591_PER_55      = 0x0E,
00076     TSL2591_PER_60      = 0x0F,
00077 } tsl2591Persist_t;
00078 
00079 class TSL2591
00080 {
00081     public:
00082     TSL2591(I2C& tsl2591_i2c, uint8_t tsl2591_addr=TSL2591_ADDR);
00083     bool init(void);
00084     void enable(void);
00085     void disable(void);
00086     void setGain(tsl2591Gain_t gain);
00087     void setTime(tsl2591IntegrationTime_t integ);
00088     void getALS(void);
00089     void calcLux(void);
00090     volatile uint32_t           rawALS;
00091     volatile uint16_t           ir;
00092     volatile uint16_t           full;
00093     volatile uint16_t           visible;
00094     volatile uint32_t           lux;
00095     
00096     protected:
00097     I2C                         _i2c;
00098     uint8_t                     _addr;
00099     bool                        _init;
00100     tsl2591Gain_t               _gain;
00101     tsl2591IntegrationTime_t    _integ;
00102 };
00103 
00104 #endif