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.
Fork of TSL2561 by
TSL2561.h
00001 00002 #ifndef _TSL2561_H_ 00003 #define _TSL2561_H_ 00004 00005 #include "mbed.h" 00006 00007 #define TSL2561_I2C_PINNAME_SDA p9 00008 #define TSL2561_I2C_PINNAME_SCL p10 00009 00010 #define TSL2561_VISIBLE 2 // channel 0 - channel 1 00011 #define TSL2561_INFRARED 1 // channel 1 00012 #define TSL2561_FULLSPECTRUM 0 // channel 0 00013 00014 // 3 i2c address options! 00015 #define TSL2561_ADDR_LOW 0x29 00016 #define TSL2561_ADDR_FLOAT 0x39 00017 #define TSL2561_ADDR_HIGH 0x49 00018 00019 // Lux calculations differ slightly for CS package 00020 //#define TSL2561_PACKAGE_CS 00021 #define TSL2561_PACKAGE_T_FN_CL 00022 00023 #define TSL2561_READBIT (0x01) 00024 00025 #define TSL2561_COMMAND_BIT (0x80) // Must be 1 00026 #define TSL2561_CLEAR_BIT (0x40) // Clears any pending interrupt (write 1 to clear) 00027 #define TSL2561_WORD_BIT (0x20) // 1 = read/write word (rather than byte) 00028 #define TSL2561_BLOCK_BIT (0x10) // 1 = using block read/write 00029 00030 #define TSL2561_CONTROL_POWERON (0x03) 00031 #define TSL2561_CONTROL_POWEROFF (0x00) 00032 00033 #define TSL2561_LUX_LUXSCALE (14) // Scale by 2^14 00034 #define TSL2561_LUX_RATIOSCALE (9) // Scale ratio by 2^9 00035 #define TSL2561_LUX_CHSCALE (10) // Scale channel values by 2^10 00036 #define TSL2561_LUX_CHSCALE_TINT0 (0x7517) // 322/11 * 2^TSL2561_LUX_CHSCALE 00037 #define TSL2561_LUX_CHSCALE_TINT1 (0x0FE7) // 322/81 * 2^TSL2561_LUX_CHSCALE 00038 00039 // T, FN and CL package values 00040 #define TSL2561_LUX_K1T (0x0040) // 0.125 * 2^RATIO_SCALE 00041 #define TSL2561_LUX_B1T (0x01f2) // 0.0304 * 2^LUX_SCALE 00042 #define TSL2561_LUX_M1T (0x01be) // 0.0272 * 2^LUX_SCALE 00043 #define TSL2561_LUX_K2T (0x0080) // 0.250 * 2^RATIO_SCALE 00044 #define TSL2561_LUX_B2T (0x0214) // 0.0325 * 2^LUX_SCALE 00045 #define TSL2561_LUX_M2T (0x02d1) // 0.0440 * 2^LUX_SCALE 00046 #define TSL2561_LUX_K3T (0x00c0) // 0.375 * 2^RATIO_SCALE 00047 #define TSL2561_LUX_B3T (0x023f) // 0.0351 * 2^LUX_SCALE 00048 #define TSL2561_LUX_M3T (0x037b) // 0.0544 * 2^LUX_SCALE 00049 #define TSL2561_LUX_K4T (0x0100) // 0.50 * 2^RATIO_SCALE 00050 #define TSL2561_LUX_B4T (0x0270) // 0.0381 * 2^LUX_SCALE 00051 #define TSL2561_LUX_M4T (0x03fe) // 0.0624 * 2^LUX_SCALE 00052 #define TSL2561_LUX_K5T (0x0138) // 0.61 * 2^RATIO_SCALE 00053 #define TSL2561_LUX_B5T (0x016f) // 0.0224 * 2^LUX_SCALE 00054 #define TSL2561_LUX_M5T (0x01fc) // 0.0310 * 2^LUX_SCALE 00055 #define TSL2561_LUX_K6T (0x019a) // 0.80 * 2^RATIO_SCALE 00056 #define TSL2561_LUX_B6T (0x00d2) // 0.0128 * 2^LUX_SCALE 00057 #define TSL2561_LUX_M6T (0x00fb) // 0.0153 * 2^LUX_SCALE 00058 #define TSL2561_LUX_K7T (0x029a) // 1.3 * 2^RATIO_SCALE 00059 #define TSL2561_LUX_B7T (0x0018) // 0.00146 * 2^LUX_SCALE 00060 #define TSL2561_LUX_M7T (0x0012) // 0.00112 * 2^LUX_SCALE 00061 #define TSL2561_LUX_K8T (0x029a) // 1.3 * 2^RATIO_SCALE 00062 #define TSL2561_LUX_B8T (0x0000) // 0.000 * 2^LUX_SCALE 00063 #define TSL2561_LUX_M8T (0x0000) // 0.000 * 2^LUX_SCALE 00064 00065 // CS package values 00066 #define TSL2561_LUX_K1C (0x0043) // 0.130 * 2^RATIO_SCALE 00067 #define TSL2561_LUX_B1C (0x0204) // 0.0315 * 2^LUX_SCALE 00068 #define TSL2561_LUX_M1C (0x01ad) // 0.0262 * 2^LUX_SCALE 00069 #define TSL2561_LUX_K2C (0x0085) // 0.260 * 2^RATIO_SCALE 00070 #define TSL2561_LUX_B2C (0x0228) // 0.0337 * 2^LUX_SCALE 00071 #define TSL2561_LUX_M2C (0x02c1) // 0.0430 * 2^LUX_SCALE 00072 #define TSL2561_LUX_K3C (0x00c8) // 0.390 * 2^RATIO_SCALE 00073 #define TSL2561_LUX_B3C (0x0253) // 0.0363 * 2^LUX_SCALE 00074 #define TSL2561_LUX_M3C (0x0363) // 0.0529 * 2^LUX_SCALE 00075 #define TSL2561_LUX_K4C (0x010a) // 0.520 * 2^RATIO_SCALE 00076 #define TSL2561_LUX_B4C (0x0282) // 0.0392 * 2^LUX_SCALE 00077 #define TSL2561_LUX_M4C (0x03df) // 0.0605 * 2^LUX_SCALE 00078 #define TSL2561_LUX_K5C (0x014d) // 0.65 * 2^RATIO_SCALE 00079 #define TSL2561_LUX_B5C (0x0177) // 0.0229 * 2^LUX_SCALE 00080 #define TSL2561_LUX_M5C (0x01dd) // 0.0291 * 2^LUX_SCALE 00081 #define TSL2561_LUX_K6C (0x019a) // 0.80 * 2^RATIO_SCALE 00082 #define TSL2561_LUX_B6C (0x0101) // 0.0157 * 2^LUX_SCALE 00083 #define TSL2561_LUX_M6C (0x0127) // 0.0180 * 2^LUX_SCALE 00084 #define TSL2561_LUX_K7C (0x029a) // 1.3 * 2^RATIO_SCALE 00085 #define TSL2561_LUX_B7C (0x0037) // 0.00338 * 2^LUX_SCALE 00086 #define TSL2561_LUX_M7C (0x002b) // 0.00260 * 2^LUX_SCALE 00087 #define TSL2561_LUX_K8C (0x029a) // 1.3 * 2^RATIO_SCALE 00088 #define TSL2561_LUX_B8C (0x0000) // 0.000 * 2^LUX_SCALE 00089 #define TSL2561_LUX_M8C (0x0000) // 0.000 * 2^LUX_SCALE 00090 00091 enum 00092 { 00093 TSL2561_REGISTER_CONTROL = 0x00, 00094 TSL2561_REGISTER_TIMING = 0x01, 00095 TSL2561_REGISTER_THRESHHOLDL_LOW = 0x02, 00096 TSL2561_REGISTER_THRESHHOLDL_HIGH = 0x03, 00097 TSL2561_REGISTER_THRESHHOLDH_LOW = 0x04, 00098 TSL2561_REGISTER_THRESHHOLDH_HIGH = 0x05, 00099 TSL2561_REGISTER_INTERRUPT = 0x06, 00100 TSL2561_REGISTER_CRC = 0x08, 00101 TSL2561_REGISTER_ID = 0x0A, 00102 TSL2561_REGISTER_CHAN0_LOW = 0x0C, 00103 TSL2561_REGISTER_CHAN0_HIGH = 0x0D, 00104 TSL2561_REGISTER_CHAN1_LOW = 0x0E, 00105 TSL2561_REGISTER_CHAN1_HIGH = 0x0F 00106 }; 00107 00108 typedef enum 00109 { 00110 TSL2561_INTEGRATIONTIME_13MS = 0x00, // 13.7ms 00111 TSL2561_INTEGRATIONTIME_101MS = 0x01, // 101ms 00112 TSL2561_INTEGRATIONTIME_402MS = 0x02 // 402ms 00113 } 00114 tsl2561IntegrationTime_t; 00115 00116 typedef enum 00117 { 00118 TSL2561_GAIN_0X = 0x00, // No gain 00119 TSL2561_GAIN_16X = 0x10, // 16x gain 00120 } 00121 tsl2561Gain_t; 00122 00123 class TSL2561 { 00124 00125 public: 00126 //---CLASS CONSTRUCTOR---// 00127 TSL2561(); 00128 TSL2561(uint8_t addr); 00129 TSL2561(PinName sda, PinName scl); 00130 TSL2561(PinName sda, PinName scl, uint8_t addr); 00131 00132 bool begin(void); 00133 void enable(void); 00134 void disable(void); 00135 void write8(uint8_t r, uint8_t v); 00136 uint16_t read16(uint8_t reg); 00137 00138 uint32_t calculateLux(uint16_t ch0, uint16_t ch1); 00139 void setTiming(tsl2561IntegrationTime_t integration); 00140 void setGain(tsl2561Gain_t gain); 00141 uint16_t getLuminosity (uint8_t channel); 00142 uint32_t getFullLuminosity (); 00143 00144 private: 00145 I2C i2c; 00146 int8_t _addr; 00147 tsl2561IntegrationTime_t _integration; 00148 tsl2561Gain_t _gain; 00149 00150 bool _initialized; 00151 }; 00152 #endif
Generated on Mon Jul 18 2022 13:19:14 by
 1.7.2
 1.7.2 
    