Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
Generated on Sun Jul 17 2022 18:52:39 by
1.7.2