Library for using the AMS TSL45315 Ambient Light Sensor
tsl45315.hpp
- Committer:
- ajenal
- Date:
- 2014-03-24
- Revision:
- 0:cafc6c4ed875
- Child:
- 1:303c95402cdc
File content as of revision 0:cafc6c4ed875:
#ifndef _TSL45315_HPP_ #define _TSL45315_HPP_ #include "mbed.h" #define I2C_ADDR (0x52) // Register definition #define CONTROL_REG 0x00 #define CONFIG_REG 0x01 #define DATALOW_REG 0x04 #define DATAHIGH_REG 0x05 #define ID_REG 0x0A //Control Register #define POWER_DOWN 0X00 #define SINGLE_ADC 0x02 #define NORMAL_OP 0x03 //Config Register #define M1 0x00 #define M2 0x01 #define M4 0x02 #define I2C_FREQ 400000 namespace TSL45x { /** Class: TSL45315 * Digital Ambient Light Sensor (ALS) - TSL45315 * Illumination values are directly presented in lux * without calculation. * * Example: * @code * Serial pc(USBTX, USBRX); * TSL45x::TSL45315 sensor(p9, p10); * * int main() * { * pc.printf("TSL45315 Illumination Sensor\n"); * * pc.printf("ID:\t%x\n", sensor.getID()); * pc.printf("M:\t%x\n", M1); * pc.printf("Multiplier:\t%x\n", sensor.getMultiplier()); * * while(1) { * * pc.printf("Illumination: %u lux\n",sensor.getLux()); * * wait(1); * } * } * @endcode */ class TSL45315 { private: I2C _i2c; Ticker _luxTicker; uint32_t lux; uint8_t devID; uint8_t multiplier; public: /** Create a TSL45315 instance * @param sda - I2C Dataline pin * @param scl - I2C Clockline pin */ TSL45315(PinName sda, PinName scl); /** Create a TSL45315 instance with variable integration time * @param sda - I2C Dataline pin * @param scl - I2C Clockline pin * @param mult - Multiplier with corresponding integration time (M1 = 400ms, M2 = 200ms, M4 = 100ms) */ TSL45315(PinName sda, PinName scl, uint8_t mult); /** * sets the address in the command register of the * target register for future write operations * * @param reg - specific register to write to (control or config) * @param arg - argument of function in the control or config register */ void setReg( int reg, int arg); /** * reads out datalow and datahigh registers and * calculates the resulting illumination value * in lux which is saved in the variable lux * * @param reg - specific register to write to * @param arg - argument of function in the control or config register */ void getLuxData( ); /** * @returns returns the actual illumination value in lux which was previously calculated in the getLuxData routine */ uint32_t getLux( ) { return lux; }; /** * reads out the ID register and saves the id in the variable devID */ void getIDdata(); /** * @returns the ID of the device */ uint8_t getID( ) { return devID; }; /** * reads out datalow and datahigh registers and * calculates the resulting illumination value * in lux which is saved in the variable lux * * @param mult - Multiplier (1,2,4) defined by M1, M2, M4 */ void setMultiplier( uint8_t mult); /** * @returns the multiplier according to the choosen integration time */ int getMultiplier( ) { return multiplier; }; }; } /* !_TSL45315_HPP_ */ #endif