Address is changed to suit Grove Digital Light Sensor.
Fork of TSL2561_I2C by
Diff: TSL2561_I2C.h
- Revision:
- 5:93782eb646de
- Parent:
- 4:5d1f8d7d81ff
- Child:
- 6:17fef2caa563
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TSL2561_I2C.h Wed Apr 16 10:57:57 2014 +0000 @@ -0,0 +1,54 @@ +#ifndef TSL2561_I2C_H +#define TSL2561_I2C_H +#include "mbed.h" + +//Defines +#define TSL_SLAVE_ADDRESS 0x39 + +#define TSL_CONTROL 0x00 +#define TSL_TIMING 0x01 +#define TSL_THRESHLOWLOW 0x02 +#define TSL_THRESHHIGHLOW 0x04 +#define TSL_INTERRUPT 0x06 +#define TSL_ID 0x0A +#define TSL_DATA0LOW 0x0C +#define TSL_DATA1LOW 0x0E + +class TSL2561_I2C { +public: + TSL2561_I2C( PinName sda, PinName scl ); + + int getVisibleAndIR(); + int getIROnly(); + float getLux(); + + int enablePower(); + int disablePower(); + bool isPowerEnabled(); + + int readGain(); + int setGain( const int gain ); // gain must be either 1 or 16 + float readIntegrationTime(); // in ms + int setIntegrationTime( const float itime ); // itime (in ms) should be 13.7, 101 or 402. + int readLowInterruptThreshold(); + int readHighInterruptThreshold(); + int setLowInterruptThreshold( const int threshold ); + int setHighInterruptThreshold( const int threshold ); + int readInterruptPersistence(); + int setInterruptPersistence( const int persistence ); // 0: interrupt every ADC cycle, 1-15: corresponding number of cycles until interrupt + int readInterruptControl(); + int setInterruptControl( const int persistence ); // 0: interrupt output disabled, 1: Level Interrupt, 2: SMBAlert compliant, 3: Test Mode + int clearInterrupt(); // writes 0b11000000 to command register to clear interrupt + int getPartNumber(); // 0: TSL2560, 1: TSL2561 + int getRevisionNumber(); + +private: + I2C i2c; + + int writeSingleRegister( char address, char data ); + int writeMultipleRegisters( char address, char* data, int quantity ); + char readSingleRegister( char address ); + int readMultipleRegisters( char address, char* output, int quantity ); +}; + +#endif \ No newline at end of file