Edwin Cho
/
TSL2591
Adafruit TSL2591 sensor
TSL2591.cpp
- Committer:
- 12104404
- Date:
- 2016-03-13
- Revision:
- 0:815555c72774
- Child:
- 1:308cc5302475
File content as of revision 0:815555c72774:
#include "TSL2591.h" TSL2591::TSL2591 (I2C& tsl2591_i2c, uint8_t tsl2591_addr): _i2c(tsl2591_i2c), _addr(tsl2591_addr) { _init = false; _integ = TSL2591_INTT_100MS; _gain = TSL2591_GAIN_MED; } /* * Initialize TSL2591 * Checks ID and sets gain and integration time */ bool TSL2591::init(void) { char write[] = {(TSL2591_CMD_BIT|TSL2591_REG_ID)}; if(_i2c.write(_addr<<1, write, 1, 0) == 0) { char read[1]; _i2c.read(_addr<<1, read, 1, 0); if(read[0] == TSL2591_ID) { _init = true; setGain(TSL2591_GAIN_HIGH); setIntegration(TSL2591_INTT_100MS); disable(); return true; } } return false; } void TSL2591::enable(void) { char write[] = {(TSL2591_CMD_BIT|TSL2591_REG_ENABLE), (TSL2591_EN_PON|TSL2591_EN_AEN|TSL2591_EN_AIEN|TSL2591_EN_NPIEN)}; _i2c.write(_addr<<1, write, 2, 0); } void TSL2591::disable(void) { char write[] = {(TSL2591_CMD_BIT|TSL2591_REG_ENABLE), (TSL2591_EN_POFF)}; _i2c.write(_addr<<1, write, 2, 0); } void TSL2591::setGain(tsl2591Gain_t gain) { enable(); _gain = gain; char write[] = {(TSL2591_CMD_BIT|TSL2591_REG_CONTROL), (_integ|_gain)}; _i2c.write(_addr<<1, write, 2, 0); disable(); } void TSL2591::setIntegration(tsl2591IntegrationTime_t integ) { enable(); _integ = integ; char write[] = {(TSL2591_CMD_BIT|TSL2591_REG_CONTROL), (_integ|_gain)}; _i2c.write(_addr<<1, write, 2, 0); disable(); } void TSL2591::getALS(void) { enable(); for(uint8_t t=0; t<=_integ; t++) { wait(.12); } char write1[] = {(TSL2591_CMD_BIT|TSL2591_REG_CHAN1_H)}; _i2c.write(_addr<<1, write1, 1, 0); char read1[2]; _i2c.read(_addr<<1, read1, 2, 0); char write2[] = {(TSL2591_CMD_BIT|TSL2591_REG_CHAN0_H)}; _i2c.write(_addr<<1, write2, 1, 0); char read2[2]; _i2c.read(_addr<<1, read2, 2, 0); printf("%d\n",(((read1[0]<<8)|read1[1])<<16)|((read2[0]<<8)|read2[1])); disable(); } /* uint16_t TSL2591::getLumin(uint8_t channel) { uint32_t x = } */ //uint32_t TSL2591::calcLux()