ESP32-CAM
tsl2591.h
Go to the documentation of this file.
1 #ifndef _TSL2591_H_
2 #define _TSL2591_H_
3 
4 #include <Arduino.h>
5 #include "Wire.h"
6 
7 // Light sensor definitions
8 #define TSL2591_COMMAND_BIT 0xA0
9 
10 #define TSL2591_VISIBLE 2
11 #define TSL2591_INFRARED 1
12 #define TSL2591_FULLSPECTRUM 0
13 
14 #define TSL2591_ENABLE_POWEROFF 0x00
15 #define TSL2591_ENABLE_POWERON 0x01
16 #define TSL2591_ENABLE_AEN 0x02
17 #define TSL2591_ENABLE_AIEN 0x10
18 #define TSL2591_ENABLE_NPIEN 0x80
19 
20 #define TSL2591_LUX_DF 408.0F
21 
22 enum
24 {
25  TSL2591_REGISTER_ENABLE = 0x00, // Enable register
26  TSL2591_REGISTER_CONTROL = 0x01, // Control register
27  TSL2591_REGISTER_THRESHOLD_AILTL = 0x04, // ALS low threshold lower byte
28  TSL2591_REGISTER_THRESHOLD_AILTH = 0x05, // ALS low threshold upper byte
29  TSL2591_REGISTER_THRESHOLD_AIHTL = 0x06, // ALS high threshold lower byte
30  TSL2591_REGISTER_THRESHOLD_AIHTH = 0x07, // ALS high threshold upper byte
31  TSL2591_REGISTER_THRESHOLD_NPAILTL = 0x08, // No Persist ALS low threshold lower byte
32  TSL2591_REGISTER_THRESHOLD_NPAILTH = 0x09, // No Persist ALS low threshold higher byte
33  TSL2591_REGISTER_THRESHOLD_NPAIHTL = 0x0A, // No Persist ALS high threshold lower byte
34  TSL2591_REGISTER_THRESHOLD_NPAIHTH = 0x0B, // No Persist ALS high threshold higher byte
35  TSL2591_REGISTER_PERSIST_FILTER = 0x0C, // Interrupt persistence filter
36  TSL2591_REGISTER_PACKAGE_PID = 0x11, // Package Identification
37  TSL2591_REGISTER_DEVICE_ID = 0x12, // Device Identification
38  TSL2591_REGISTER_DEVICE_STATUS = 0x13, // Internal Status
39  TSL2591_REGISTER_CHAN0_LOW = 0x14, // Channel 0 data, low byte
40  TSL2591_REGISTER_CHAN0_HIGH = 0x15, // Channel 0 data, high byte
41  TSL2591_REGISTER_CHAN1_LOW = 0x16, // Channel 1 data, low byte
42  TSL2591_REGISTER_CHAN1_HIGH = 0x17, // Channel 1 data, high byte
43 };
44 
46 typedef enum
47 {
48  TSL2591_INTEGRATIONTIME_100MS = 0x00, // 100 millis
49  TSL2591_INTEGRATIONTIME_200MS = 0x01, // 200 millis
50  TSL2591_INTEGRATIONTIME_300MS = 0x02, // 300 millis
51  TSL2591_INTEGRATIONTIME_400MS = 0x03, // 400 millis
52  TSL2591_INTEGRATIONTIME_500MS = 0x04, // 500 millis
53  TSL2591_INTEGRATIONTIME_600MS = 0x05, // 600 millis
54 }
56 
58 typedef enum
59 {
64 }
66 
67 class TSL2591 {
68  public:
69  TSL2591(uint8_t i2cAddress, uint8_t sdaPin, uint8_t sclPin);
70  boolean begin(void);
71  void enable(void);
72  void disable(void);
73 
74  uint16_t getLuminosity(uint8_t channel);
75  uint32_t getFullLuminosity(void);
76  float calculateLux(uint16_t ch0, uint16_t ch1);
77 
78  void setGain(tsl2591Gain_t gain);
79  void setTiming(tsl2591IntegrationTime_t integration);
82 
83  uint8_t getStatus(void);
84 
85  unsigned char readByte(unsigned char address);
86  boolean writeByte(unsigned char address, unsigned char value);
87  uint8_t readUInt(unsigned char address);
88 
89  private:
90  uint8_t _i2cAddress;
91  uint8_t _sdaPin;
92  uint8_t _sclPin;
93 
94  tsl2591IntegrationTime_t _integration;
95  tsl2591Gain_t _gain;
96  int32_t _sensorID;
97 
98  boolean _initialized;
99 };
100 
101 #endif
tsl2591Gain_t
tsl2591Gain_t
Enumeration for the sensor gain.
Definition: tsl2591.h:58
TSL2591_REGISTER_THRESHOLD_AILTH
@ TSL2591_REGISTER_THRESHOLD_AILTH
Definition: tsl2591.h:28
TSL2591_REGISTER_THRESHOLD_NPAILTL
@ TSL2591_REGISTER_THRESHOLD_NPAILTL
Definition: tsl2591.h:31
tsl2591IntegrationTime_t
tsl2591IntegrationTime_t
Enumeration for the sensor integration timing.
Definition: tsl2591.h:46
TSL2591_INTEGRATIONTIME_100MS
@ TSL2591_INTEGRATIONTIME_100MS
Definition: tsl2591.h:48
TSL2591::setTiming
void setTiming(tsl2591IntegrationTime_t integration)
Set light sensor integration time.
Definition: tsl2591.cpp:126
TSL2591::enable
void enable(void)
Enables device.
Definition: tsl2591.cpp:60
TSL2591::getTiming
tsl2591IntegrationTime_t getTiming()
Get light sensor integration time.
Definition: tsl2591.cpp:147
TSL2591_REGISTER_CONTROL
@ TSL2591_REGISTER_CONTROL
Definition: tsl2591.h:26
TSL2591_REGISTER_THRESHOLD_NPAILTH
@ TSL2591_REGISTER_THRESHOLD_NPAILTH
Definition: tsl2591.h:32
TSL2591_REGISTER_PACKAGE_PID
@ TSL2591_REGISTER_PACKAGE_PID
Definition: tsl2591.h:36
TSL2591::getGain
tsl2591Gain_t getGain()
Get light sensor gain.
Definition: tsl2591.cpp:116
TSL2591::calculateLux
float calculateLux(uint16_t ch0, uint16_t ch1)
Calculates lux value from both channels (Visible and IR) readings.
Definition: tsl2591.cpp:159
TSL2591::getFullLuminosity
uint32_t getFullLuminosity(void)
Reads luminosity from both channels (Visible and IR)
Definition: tsl2591.cpp:232
TSL2591_REGISTER_ENABLE
@ TSL2591_REGISTER_ENABLE
Definition: tsl2591.h:25
TSL2591_INTEGRATIONTIME_400MS
@ TSL2591_INTEGRATIONTIME_400MS
Definition: tsl2591.h:51
TSL2591_INTEGRATIONTIME_500MS
@ TSL2591_INTEGRATIONTIME_500MS
Definition: tsl2591.h:52
TSL2591_INTEGRATIONTIME_200MS
@ TSL2591_INTEGRATIONTIME_200MS
Definition: tsl2591.h:49
TSL2591::setGain
void setGain(tsl2591Gain_t gain)
Set light sensor gain.
Definition: tsl2591.cpp:95
TSL2591_GAIN_LOW
@ TSL2591_GAIN_LOW
Definition: tsl2591.h:60
TSL2591_GAIN_HIGH
@ TSL2591_GAIN_HIGH
medium gain (25x)
Definition: tsl2591.h:62
TSL2591_INTEGRATIONTIME_300MS
@ TSL2591_INTEGRATIONTIME_300MS
Definition: tsl2591.h:50
TSL2591_REGISTER_THRESHOLD_NPAIHTH
@ TSL2591_REGISTER_THRESHOLD_NPAIHTH
Definition: tsl2591.h:34
TSL2591::disable
void disable(void)
Disables the device.
Definition: tsl2591.cpp:78
TSL2591::TSL2591
TSL2591(uint8_t i2cAddress, uint8_t sdaPin, uint8_t sclPin)
Construct a new TSL2591::TSL2591 object.
Definition: tsl2591.cpp:11
TSL2591_REGISTER_PERSIST_FILTER
@ TSL2591_REGISTER_PERSIST_FILTER
Definition: tsl2591.h:35
TSL2591_REGISTER_CHAN0_HIGH
@ TSL2591_REGISTER_CHAN0_HIGH
Definition: tsl2591.h:40
TSL2591_REGISTER_THRESHOLD_AIHTH
@ TSL2591_REGISTER_THRESHOLD_AIHTH
Definition: tsl2591.h:30
TSL2591_GAIN_MAX
@ TSL2591_GAIN_MAX
medium gain (428x)
Definition: tsl2591.h:63
TSL2591_REGISTER_DEVICE_ID
@ TSL2591_REGISTER_DEVICE_ID
Definition: tsl2591.h:37
TSL2591_REGISTER_DEVICE_STATUS
@ TSL2591_REGISTER_DEVICE_STATUS
Definition: tsl2591.h:38
TSL2591
Definition: tsl2591.h:67
TSL2591_GAIN_MED
@ TSL2591_GAIN_MED
low gain (1x)
Definition: tsl2591.h:61
TSL2591::writeByte
boolean writeByte(unsigned char address, unsigned char value)
Write byte to I2C.
Definition: tsl2591.cpp:341
TSL2591::begin
boolean begin(void)
Starts I2C communication with sensor.
Definition: tsl2591.cpp:30
TSL2591_REGISTER_CHAN0_LOW
@ TSL2591_REGISTER_CHAN0_LOW
Definition: tsl2591.h:39
TSL2591::readUInt
uint8_t readUInt(unsigned char address)
Read two bytes as integer from I2C.
Definition: tsl2591.cpp:360
TSL2591_REGISTER_THRESHOLD_AILTL
@ TSL2591_REGISTER_THRESHOLD_AILTL
Definition: tsl2591.h:27
TSL2591_REGISTER_CHAN1_HIGH
@ TSL2591_REGISTER_CHAN1_HIGH
Definition: tsl2591.h:42
TSL2591::getLuminosity
uint16_t getLuminosity(uint8_t channel)
Reads luminosity from selected channel (Visible and/or IR)
Definition: tsl2591.cpp:266
TSL2591_REGISTER_THRESHOLD_NPAIHTL
@ TSL2591_REGISTER_THRESHOLD_NPAIHTL
Definition: tsl2591.h:33
TSL2591::getStatus
uint8_t getStatus(void)
Reads the device status byte.
Definition: tsl2591.cpp:291
TSL2591_REGISTER_THRESHOLD_AIHTL
@ TSL2591_REGISTER_THRESHOLD_AIHTL
Definition: tsl2591.h:29
TSL2591::readByte
unsigned char readByte(unsigned char address)
Read byte as char from I2C.
Definition: tsl2591.cpp:315
TSL2591_INTEGRATIONTIME_600MS
@ TSL2591_INTEGRATIONTIME_600MS
Definition: tsl2591.h:53
TSL2591_REGISTER_CHAN1_LOW
@ TSL2591_REGISTER_CHAN1_LOW
Definition: tsl2591.h:41