Luminosity sensor by Texas Advanced Optoelectronic Solutions Inc.. Device combines one broadband photodiode (visible plus infrared) and one infrared-responding photodiode. Sets Gain x1 and 402mS as default.
Dependents: MusicBoxForFathersDay FTHR_SensorHub Affich_Lum_Moist Projetv0 ... more
TSL2561.h@5:5b1b625fda6f, 2018-09-21 (annotated)
- Committer:
- kenjiArai
- Date:
- Fri Sep 21 22:57:07 2018 +0000
- Revision:
- 5:5b1b625fda6f
- Parent:
- 3:d60d8198d76d
based on Adafruit program and keep interface functions
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 5:5b1b625fda6f | 1 | /*! |
kenjiArai | 5:5b1b625fda6f | 2 | * @file Adafruit_TSL2561_U.h |
kenjiArai | 5:5b1b625fda6f | 3 | * |
kenjiArai | 5:5b1b625fda6f | 4 | * This is part of Adafruit's FXOS8700 driver for the Arduino platform. It is |
kenjiArai | 5:5b1b625fda6f | 5 | * designed specifically to work with the Adafruit FXOS8700 breakout: |
kenjiArai | 5:5b1b625fda6f | 6 | * https://www.adafruit.com/products/3463 |
kenjiArai | 5:5b1b625fda6f | 7 | * |
kenjiArai | 5:5b1b625fda6f | 8 | * These sensors use I2C to communicate, 2 pins (SCL+SDA) are required |
kenjiArai | 5:5b1b625fda6f | 9 | * to interface with the breakout. |
kenjiArai | 5:5b1b625fda6f | 10 | * |
kenjiArai | 5:5b1b625fda6f | 11 | * Adafruit invests time and resources providing this open source code, |
kenjiArai | 5:5b1b625fda6f | 12 | * please support Adafruit and open-source hardware by purchasing |
kenjiArai | 5:5b1b625fda6f | 13 | * products from Adafruit! |
kenjiArai | 5:5b1b625fda6f | 14 | * |
kenjiArai | 5:5b1b625fda6f | 15 | * Written by Kevin "KTOWN" Townsend for Adafruit Industries. |
kenjiArai | 5:5b1b625fda6f | 16 | * |
kenjiArai | 5:5b1b625fda6f | 17 | * BSD license, all text here must be included in any redistribution. |
kenjiArai | 5:5b1b625fda6f | 18 | * |
kenjiArai | 5:5b1b625fda6f | 19 | */ |
kenjiArai | 5:5b1b625fda6f | 20 | |
kenjiArai | 5:5b1b625fda6f | 21 | //------- Modified by ---------------------------------------------------------- |
kenjiArai | 5:5b1b625fda6f | 22 | // Kenji Arai / JH1PJL |
kenjiArai | 5:5b1b625fda6f | 23 | // http://www.page.sannet.ne.jp/kenjia/index.html |
kenjiArai | 5:5b1b625fda6f | 24 | // http://mbed.org/users/kenjiArai/ |
kenjiArai | 5:5b1b625fda6f | 25 | // Created: Feburary 21st, 2015 |
kenjiArai | 5:5b1b625fda6f | 26 | // Revised: August 23rd, 2017 |
kenjiArai | 5:5b1b625fda6f | 27 | // Revised: Feburary 20th, 2018 bug fix -> read_ID() & who_am_i() |
kenjiArai | 5:5b1b625fda6f | 28 | // Thanks PARK JAICHANG |
kenjiArai | 5:5b1b625fda6f | 29 | // Revised: March 31st, 2018 Added "Auto Range mode" |
kenjiArai | 5:5b1b625fda6f | 30 | // Use Adafruit library |
kenjiArai | 5:5b1b625fda6f | 31 | // |
kenjiArai | 5:5b1b625fda6f | 32 | // Original information https://www.adafruit.com/product/439 |
kenjiArai | 5:5b1b625fda6f | 33 | // Original source files https://github.com/adafruit/TSL2561-Arduino-Library |
kenjiArai | 5:5b1b625fda6f | 34 | // https://github.com/adafruit/Adafruit_TSL2561 |
kenjiArai | 5:5b1b625fda6f | 35 | // Change for Mbed platform |
kenjiArai | 5:5b1b625fda6f | 36 | // modified -> all related files |
kenjiArai | 5:5b1b625fda6f | 37 | //------------------------------------------------------------------------------ |
kenjiArai | 5:5b1b625fda6f | 38 | |
kenjiArai | 5:5b1b625fda6f | 39 | #ifndef TSL2561_H_ |
kenjiArai | 5:5b1b625fda6f | 40 | #define TSL2561_H_ |
kenjiArai | 5:5b1b625fda6f | 41 | |
kenjiArai | 5:5b1b625fda6f | 42 | #include "mbed.h" |
kenjiArai | 5:5b1b625fda6f | 43 | |
kenjiArai | 5:5b1b625fda6f | 44 | // Luminosity sensor, TSL2561 |
kenjiArai | 5:5b1b625fda6f | 45 | // Address b7=0,b6=1,b5=1,b4=1,b3=0,b2=0,b1=1, b0=R/W |
kenjiArai | 5:5b1b625fda6f | 46 | #define TSL2561_ADDRESS_GND (0x29 << 1) |
kenjiArai | 5:5b1b625fda6f | 47 | #define TSL2561_ADDR_LOW (0x29 << 1) |
kenjiArai | 5:5b1b625fda6f | 48 | #define TSL2561_ADDRESS_FLOAT (0x39 << 1) |
kenjiArai | 5:5b1b625fda6f | 49 | #define TSL2561_ADDR_FLOAT (0x39 << 1) |
kenjiArai | 5:5b1b625fda6f | 50 | #define TSL2561_ADDRESS_VDD (0x49 << 1) |
kenjiArai | 5:5b1b625fda6f | 51 | #define TSL2561_ADDR_HIGH (0x49 << 1) |
kenjiArai | 5:5b1b625fda6f | 52 | |
kenjiArai | 5:5b1b625fda6f | 53 | // Lux calculations differ slightly for CS package |
kenjiArai | 5:5b1b625fda6f | 54 | //#define TSL2561_PACKAGE_CS ///< Chip scale package |
kenjiArai | 5:5b1b625fda6f | 55 | #define TSL2561_PACKAGE_T_FN_CL ///< Dual Flat No-Lead package |
kenjiArai | 5:5b1b625fda6f | 56 | |
kenjiArai | 5:5b1b625fda6f | 57 | // ID |
kenjiArai | 5:5b1b625fda6f | 58 | #define I_AM_TSL2561CS 0x01 |
kenjiArai | 5:5b1b625fda6f | 59 | #define I_AM_TSL2561T_FN_CL 0x05 |
kenjiArai | 5:5b1b625fda6f | 60 | |
kenjiArai | 5:5b1b625fda6f | 61 | // COMMAND register bit definition |
kenjiArai | 5:5b1b625fda6f | 62 | #define TSL2561_COMMAND_BIT (0x80) ///< Must be 1 |
kenjiArai | 5:5b1b625fda6f | 63 | ///< Clears any pending interrupt (write 1 to clear) |
kenjiArai | 5:5b1b625fda6f | 64 | #define TSL2561_CLEAR_BIT (0x40) |
kenjiArai | 5:5b1b625fda6f | 65 | ///< 1 = read/write word (rather than byte) |
kenjiArai | 5:5b1b625fda6f | 66 | #define TSL2561_WORD_BIT (0x20) |
kenjiArai | 5:5b1b625fda6f | 67 | ///< 1 = using block read/write |
kenjiArai | 5:5b1b625fda6f | 68 | #define TSL2561_BLOCK_BIT (0x10) |
kenjiArai | 5:5b1b625fda6f | 69 | |
kenjiArai | 5:5b1b625fda6f | 70 | // Control register setting to turn on/off |
kenjiArai | 5:5b1b625fda6f | 71 | #define TSL2561_CONTROL_POWERON (0x03) |
kenjiArai | 5:5b1b625fda6f | 72 | #define TSL2561_CONTROL_POWEROFF (0x00) |
kenjiArai | 5:5b1b625fda6f | 73 | |
kenjiArai | 5:5b1b625fda6f | 74 | #define TSL2561_LUX_LUXSCALE (14) ///< Scale by 2^14 |
kenjiArai | 5:5b1b625fda6f | 75 | #define TSL2561_LUX_RATIOSCALE (9) ///< Scale ratio by 2^9 |
kenjiArai | 5:5b1b625fda6f | 76 | #define TSL2561_LUX_CHSCALE (10) ///< Scale channel values by 2^10 |
kenjiArai | 5:5b1b625fda6f | 77 | #define TSL2561_LUX_CHSCALE_TINT0 (0x7517) ///< 322/11 * 2^TSL2561_LUX_CHSCALE |
kenjiArai | 5:5b1b625fda6f | 78 | #define TSL2561_LUX_CHSCALE_TINT1 (0x0FE7) ///< 322/81 * 2^TSL2561_LUX_CHSCALE |
kenjiArai | 5:5b1b625fda6f | 79 | |
kenjiArai | 5:5b1b625fda6f | 80 | /** TSL2561 I2C Registers */ |
kenjiArai | 5:5b1b625fda6f | 81 | enum { |
kenjiArai | 5:5b1b625fda6f | 82 | TSL2561_REGISTER_CONTROL = 0x00, // Control/power register |
kenjiArai | 5:5b1b625fda6f | 83 | TSL2561_REGISTER_TIMING = 0x01, // Set integration time register |
kenjiArai | 5:5b1b625fda6f | 84 | TSL2561_REGISTER_THRESHHOLDL_LOW = 0x02, // Interrupt low threshold low-byte |
kenjiArai | 5:5b1b625fda6f | 85 | TSL2561_REGISTER_THRESHHOLDL_HIGH = 0x03, // Interrupt low threshold high-byte |
kenjiArai | 5:5b1b625fda6f | 86 | TSL2561_REGISTER_THRESHHOLDH_LOW = 0x04, // Interrupt high threshold low-byte |
kenjiArai | 5:5b1b625fda6f | 87 | TSL2561_REGISTER_THRESHHOLDH_HIGH = 0x05, // Interrupt high threshold high-byte |
kenjiArai | 5:5b1b625fda6f | 88 | TSL2561_REGISTER_INTERRUPT = 0x06, // Interrupt settings |
kenjiArai | 5:5b1b625fda6f | 89 | TSL2561_REGISTER_CRC = 0x08, // Factory use only |
kenjiArai | 5:5b1b625fda6f | 90 | TSL2561_REGISTER_ID = 0x0A, // TSL2561 identification setting |
kenjiArai | 5:5b1b625fda6f | 91 | TSL2561_REGISTER_CHAN0_LOW = 0x0C, // Light data channel 0, low byte |
kenjiArai | 5:5b1b625fda6f | 92 | TSL2561_REGISTER_CHAN0_HIGH = 0x0D, // Light data channel 0, high byte |
kenjiArai | 5:5b1b625fda6f | 93 | TSL2561_REGISTER_CHAN1_LOW = 0x0E, // Light data channel 1, low byte |
kenjiArai | 5:5b1b625fda6f | 94 | TSL2561_REGISTER_CHAN1_HIGH = 0x0F // Light data channel 1, high byte |
kenjiArai | 5:5b1b625fda6f | 95 | }; |
kenjiArai | 5:5b1b625fda6f | 96 | |
kenjiArai | 5:5b1b625fda6f | 97 | /** Three options for how long to integrate readings for */ |
kenjiArai | 5:5b1b625fda6f | 98 | typedef enum { |
kenjiArai | 5:5b1b625fda6f | 99 | TSL2561_INTEGRATIONTIME_13MS = 0x00, // 13.7ms |
kenjiArai | 5:5b1b625fda6f | 100 | TSL2561_INTEGRATIONTIME_101MS = 0x01, // 101ms |
kenjiArai | 5:5b1b625fda6f | 101 | TSL2561_INTEGRATIONTIME_402MS = 0x02 // 402ms |
kenjiArai | 5:5b1b625fda6f | 102 | } |
kenjiArai | 5:5b1b625fda6f | 103 | TSL2561IntegrationTime_t; |
kenjiArai | 5:5b1b625fda6f | 104 | |
kenjiArai | 5:5b1b625fda6f | 105 | /** TSL2561 offers 2 gain settings */ |
kenjiArai | 5:5b1b625fda6f | 106 | typedef enum { |
kenjiArai | 5:5b1b625fda6f | 107 | TSL2561_GAIN_1X = 0x00, // No gain |
kenjiArai | 5:5b1b625fda6f | 108 | TSL2561_GAIN_16X = 0x10, // 16x gain |
kenjiArai | 5:5b1b625fda6f | 109 | } |
kenjiArai | 5:5b1b625fda6f | 110 | TSL2561Gain_t; |
kenjiArai | 5:5b1b625fda6f | 111 | |
kenjiArai | 5:5b1b625fda6f | 112 | /** struct sensors_color_s is used to return color data in a common format. */ |
kenjiArai | 5:5b1b625fda6f | 113 | typedef struct { |
kenjiArai | 5:5b1b625fda6f | 114 | union { |
kenjiArai | 5:5b1b625fda6f | 115 | float c[3]; |
kenjiArai | 5:5b1b625fda6f | 116 | /* RGB color space */ |
kenjiArai | 5:5b1b625fda6f | 117 | struct { |
kenjiArai | 5:5b1b625fda6f | 118 | float r; /**< Red component */ |
kenjiArai | 5:5b1b625fda6f | 119 | float g; /**< Green component */ |
kenjiArai | 5:5b1b625fda6f | 120 | float b; /**< Blue component */ |
kenjiArai | 5:5b1b625fda6f | 121 | }; |
kenjiArai | 5:5b1b625fda6f | 122 | }; |
kenjiArai | 5:5b1b625fda6f | 123 | uint32_t rgba; /**< 24-bit RGBA value */ |
kenjiArai | 5:5b1b625fda6f | 124 | } sensors_color_t; |
kenjiArai | 5:5b1b625fda6f | 125 | |
kenjiArai | 5:5b1b625fda6f | 126 | #define SENSOR_TYPE_LIGHT 5 |
kenjiArai | 5:5b1b625fda6f | 127 | |
kenjiArai | 5:5b1b625fda6f | 128 | /* Sensor details */ |
kenjiArai | 5:5b1b625fda6f | 129 | /** struct sensor_s is used to describe basic information |
kenjiArai | 5:5b1b625fda6f | 130 | about a specific sensor. */ |
kenjiArai | 5:5b1b625fda6f | 131 | typedef struct { |
kenjiArai | 5:5b1b625fda6f | 132 | float max_value; /**< maximum value of this sensor's value in SI units */ |
kenjiArai | 5:5b1b625fda6f | 133 | float min_value; /**< minimum value of this sensor's value in SI units */ |
kenjiArai | 5:5b1b625fda6f | 134 | /**< smallest difference between two values reported by this sensor */ |
kenjiArai | 5:5b1b625fda6f | 135 | float resolution; |
kenjiArai | 5:5b1b625fda6f | 136 | /**< min delay in microseconds between events. zero = not a constant rate */ |
kenjiArai | 5:5b1b625fda6f | 137 | int32_t min_delay; |
kenjiArai | 5:5b1b625fda6f | 138 | } sensor_t; |
kenjiArai | 5:5b1b625fda6f | 139 | |
kenjiArai | 5:5b1b625fda6f | 140 | /** Interface for Luminosity sensor, TSL2561 |
kenjiArai | 5:5b1b625fda6f | 141 | * @code |
kenjiArai | 5:5b1b625fda6f | 142 | * #include "mbed.h" |
kenjiArai | 5:5b1b625fda6f | 143 | * #include "TSL2561.h" |
kenjiArai | 5:5b1b625fda6f | 144 | * |
kenjiArai | 5:5b1b625fda6f | 145 | * // I2C Communication |
kenjiArai | 5:5b1b625fda6f | 146 | * TSL2561 lum(dp5,dp27); // TSL2561 SDA, SCL |
kenjiArai | 5:5b1b625fda6f | 147 | * // If you connected I2C line not only this device but also other devices, |
kenjiArai | 5:5b1b625fda6f | 148 | * // you need to declare following method. |
kenjiArai | 5:5b1b625fda6f | 149 | * I2C i2c(dp5,dp27); // SDA, SCL |
kenjiArai | 5:5b1b625fda6f | 150 | * TSL2561 lum(i2c); // TSL2561 SDA, SCL (Data available every 400mSec) |
kenjiArai | 5:5b1b625fda6f | 151 | * |
kenjiArai | 5:5b1b625fda6f | 152 | * int main() {; |
kenjiArai | 5:5b1b625fda6f | 153 | * while(true){ |
kenjiArai | 5:5b1b625fda6f | 154 | * printf("Illuminance: %+7.2f [Lux]\r\n", lum.lux()); |
kenjiArai | 5:5b1b625fda6f | 155 | * wait(1.0); |
kenjiArai | 5:5b1b625fda6f | 156 | * } |
kenjiArai | 5:5b1b625fda6f | 157 | * } |
kenjiArai | 5:5b1b625fda6f | 158 | * @endcode |
kenjiArai | 5:5b1b625fda6f | 159 | */ |
kenjiArai | 5:5b1b625fda6f | 160 | |
kenjiArai | 5:5b1b625fda6f | 161 | /**************************************************************************/ |
kenjiArai | 5:5b1b625fda6f | 162 | /*! |
kenjiArai | 5:5b1b625fda6f | 163 | @brief Class that stores state and functions |
kenjiArai | 5:5b1b625fda6f | 164 | for interacting with TSL2561 Light Sensor |
kenjiArai | 5:5b1b625fda6f | 165 | */ |
kenjiArai | 5:5b1b625fda6f | 166 | /**************************************************************************/ |
kenjiArai | 5:5b1b625fda6f | 167 | class TSL2561 |
kenjiArai | 5:5b1b625fda6f | 168 | { |
kenjiArai | 5:5b1b625fda6f | 169 | public: |
kenjiArai | 5:5b1b625fda6f | 170 | /** Configure data pin |
kenjiArai | 5:5b1b625fda6f | 171 | * @param data SDA and SCL pins |
kenjiArai | 5:5b1b625fda6f | 172 | */ |
kenjiArai | 5:5b1b625fda6f | 173 | TSL2561(PinName p_sda, PinName p_scl); |
kenjiArai | 5:5b1b625fda6f | 174 | TSL2561(PinName p_sda, PinName p_scl, uint8_t addr); |
kenjiArai | 5:5b1b625fda6f | 175 | |
kenjiArai | 5:5b1b625fda6f | 176 | /** Configure data pin (with other devices on I2C line) |
kenjiArai | 5:5b1b625fda6f | 177 | * @param I2C previous definition |
kenjiArai | 5:5b1b625fda6f | 178 | */ |
kenjiArai | 5:5b1b625fda6f | 179 | TSL2561(I2C& p_i2c); |
kenjiArai | 5:5b1b625fda6f | 180 | TSL2561(I2C& p_i2c, uint8_t addr); |
kenjiArai | 5:5b1b625fda6f | 181 | |
kenjiArai | 5:5b1b625fda6f | 182 | /** Get approximates the human eye response |
kenjiArai | 5:5b1b625fda6f | 183 | * in the commonly used Illuminance unit of Lux |
kenjiArai | 5:5b1b625fda6f | 184 | * @param none |
kenjiArai | 5:5b1b625fda6f | 185 | * @return Lux |
kenjiArai | 5:5b1b625fda6f | 186 | */ |
kenjiArai | 5:5b1b625fda6f | 187 | float lux(void); |
kenjiArai | 5:5b1b625fda6f | 188 | |
kenjiArai | 5:5b1b625fda6f | 189 | /** Get approximates the human eye response with "Auto Range" |
kenjiArai | 5:5b1b625fda6f | 190 | * in the commonly used Illuminance unit of Lux |
kenjiArai | 5:5b1b625fda6f | 191 | * @param none |
kenjiArai | 5:5b1b625fda6f | 192 | * @return Lux |
kenjiArai | 5:5b1b625fda6f | 193 | */ |
kenjiArai | 5:5b1b625fda6f | 194 | float lux_auto(void); |
kenjiArai | 5:5b1b625fda6f | 195 | |
kenjiArai | 5:5b1b625fda6f | 196 | /** Set timing register |
kenjiArai | 5:5b1b625fda6f | 197 | * @param timing parameter |
kenjiArai | 5:5b1b625fda6f | 198 | * @return timing read data |
kenjiArai | 5:5b1b625fda6f | 199 | */ |
kenjiArai | 5:5b1b625fda6f | 200 | uint8_t set_timing_reg(uint8_t parameter); |
kenjiArai | 5:5b1b625fda6f | 201 | |
kenjiArai | 5:5b1b625fda6f | 202 | /** Read timing register |
kenjiArai | 5:5b1b625fda6f | 203 | * @param timing parameter |
kenjiArai | 5:5b1b625fda6f | 204 | * @return timing read data |
kenjiArai | 5:5b1b625fda6f | 205 | */ |
kenjiArai | 5:5b1b625fda6f | 206 | uint8_t read_timing_reg(void); |
kenjiArai | 5:5b1b625fda6f | 207 | |
kenjiArai | 5:5b1b625fda6f | 208 | /** Set I2C clock frequency |
kenjiArai | 5:5b1b625fda6f | 209 | * @param freq. |
kenjiArai | 5:5b1b625fda6f | 210 | * @return none |
kenjiArai | 5:5b1b625fda6f | 211 | */ |
kenjiArai | 5:5b1b625fda6f | 212 | void frequency(int hz); |
kenjiArai | 5:5b1b625fda6f | 213 | |
kenjiArai | 5:5b1b625fda6f | 214 | /** check Device ID number |
kenjiArai | 5:5b1b625fda6f | 215 | * @param none |
kenjiArai | 5:5b1b625fda6f | 216 | * @return TSL2561 = 1, others 0 |
kenjiArai | 5:5b1b625fda6f | 217 | */ |
kenjiArai | 5:5b1b625fda6f | 218 | uint8_t who_am_i(void); |
kenjiArai | 5:5b1b625fda6f | 219 | |
kenjiArai | 5:5b1b625fda6f | 220 | /** Read ID and Revision Number |
kenjiArai | 5:5b1b625fda6f | 221 | * @param none |
kenjiArai | 5:5b1b625fda6f | 222 | * @return ID + REVNO |
kenjiArai | 5:5b1b625fda6f | 223 | */ |
kenjiArai | 5:5b1b625fda6f | 224 | uint8_t read_ID(void); |
kenjiArai | 5:5b1b625fda6f | 225 | |
kenjiArai | 5:5b1b625fda6f | 226 | /** Power Up/Down |
kenjiArai | 5:5b1b625fda6f | 227 | * @param none |
kenjiArai | 5:5b1b625fda6f | 228 | * @return none |
kenjiArai | 5:5b1b625fda6f | 229 | */ |
kenjiArai | 5:5b1b625fda6f | 230 | void power_up(void); |
kenjiArai | 5:5b1b625fda6f | 231 | void power_down(void); |
kenjiArai | 5:5b1b625fda6f | 232 | |
kenjiArai | 5:5b1b625fda6f | 233 | //---------- Adafruit_TSL2561_U.h Original functions part ------------------ |
kenjiArai | 5:5b1b625fda6f | 234 | bool init(); |
kenjiArai | 5:5b1b625fda6f | 235 | |
kenjiArai | 5:5b1b625fda6f | 236 | /* TSL2561 Functions */ |
kenjiArai | 5:5b1b625fda6f | 237 | void enableAutoRange(bool enable); |
kenjiArai | 5:5b1b625fda6f | 238 | void setIntegrationTime(TSL2561IntegrationTime_t time); |
kenjiArai | 5:5b1b625fda6f | 239 | void setGain(TSL2561Gain_t gain); |
kenjiArai | 5:5b1b625fda6f | 240 | void getLuminosity (uint16_t *broadband, uint16_t *ir); |
kenjiArai | 5:5b1b625fda6f | 241 | uint32_t calculateLux(uint16_t broadband, uint16_t ir); |
kenjiArai | 5:5b1b625fda6f | 242 | |
kenjiArai | 5:5b1b625fda6f | 243 | /* Unified Sensor API Functions */ |
kenjiArai | 5:5b1b625fda6f | 244 | bool getEvent(uint32_t*); |
kenjiArai | 5:5b1b625fda6f | 245 | void getSensor(sensor_t*); |
kenjiArai | 5:5b1b625fda6f | 246 | |
kenjiArai | 5:5b1b625fda6f | 247 | private: |
kenjiArai | 5:5b1b625fda6f | 248 | I2C *_i2c_p; |
kenjiArai | 5:5b1b625fda6f | 249 | I2C &_i2c; |
kenjiArai | 5:5b1b625fda6f | 250 | Timer t; |
kenjiArai | 5:5b1b625fda6f | 251 | |
kenjiArai | 5:5b1b625fda6f | 252 | int8_t _addr; |
kenjiArai | 5:5b1b625fda6f | 253 | bool _TSL2561Initialised; |
kenjiArai | 5:5b1b625fda6f | 254 | bool _TSL2561AutoGain; |
kenjiArai | 5:5b1b625fda6f | 255 | TSL2561IntegrationTime_t _TSL2561IntegrationTime; |
kenjiArai | 5:5b1b625fda6f | 256 | TSL2561Gain_t _TSL2561Gain; |
kenjiArai | 5:5b1b625fda6f | 257 | uint32_t ch0; |
kenjiArai | 5:5b1b625fda6f | 258 | uint32_t ch1; |
kenjiArai | 5:5b1b625fda6f | 259 | int8_t gain; |
kenjiArai | 5:5b1b625fda6f | 260 | uint8_t id_number; |
kenjiArai | 5:5b1b625fda6f | 261 | float integ_time; |
kenjiArai | 5:5b1b625fda6f | 262 | |
kenjiArai | 5:5b1b625fda6f | 263 | uint8_t dt[4]; |
kenjiArai | 5:5b1b625fda6f | 264 | |
kenjiArai | 5:5b1b625fda6f | 265 | void enable (void); |
kenjiArai | 5:5b1b625fda6f | 266 | void disable (void); |
kenjiArai | 5:5b1b625fda6f | 267 | void write8 (uint8_t reg, uint8_t value); |
kenjiArai | 5:5b1b625fda6f | 268 | uint8_t read8 (uint8_t reg); |
kenjiArai | 5:5b1b625fda6f | 269 | uint16_t read16 (uint8_t reg); |
kenjiArai | 5:5b1b625fda6f | 270 | void getData (uint16_t *broadband, uint16_t *ir); |
kenjiArai | 5:5b1b625fda6f | 271 | }; |
kenjiArai | 5:5b1b625fda6f | 272 | |
kenjiArai | 5:5b1b625fda6f | 273 | #endif // TSL2561_H |