TSL2561(照度センサ)のライブラリです
Dependents: HYBRYD2018_IZU_ROCKET Hybrid_IZU2019
Diff: TSL2561.cpp
- Revision:
- 1:4e7b35c8d948
- Parent:
- 0:40ff41e6257e
- Child:
- 2:276a177de00b
diff -r 40ff41e6257e -r 4e7b35c8d948 TSL2561.cpp --- a/TSL2561.cpp Thu Nov 16 08:23:57 2017 +0000 +++ b/TSL2561.cpp Wed May 02 18:17:28 2018 +0000 @@ -3,9 +3,14 @@ Serial DEBUG(USBTX,USBRX); -myTSL2561::myTSL2561(I2C &i2cBus) +myTSL2561::myTSL2561(I2C &i2cBus,AD0 celect) { i2c = &i2cBus; + if(celect == AD0_LOW) _addr = SLV_ADDR_LOW; + else if(celect == AD0_HIGH) _addr = SLV_ADDR_HIGH; + else _addr = SLV_ADDR_OPEN; + SLV_WRITE_TSL = _addr; + SLV_READ_TSL = _addr | 1; i2c->frequency(400000); } @@ -15,12 +20,12 @@ power_up_cmd[0] = COMMAND | CONTROL_REG; power_up_cmd[1] = POWER_UP; - i2c->write(SLV_WRITE, power_up_cmd, 2); + i2c->write(SLV_WRITE_TSL, power_up_cmd, 2); read_cmd = COMMAND | CHECK_REG; - i2c->write(SLV_WRITE, &read_cmd, 1); - i2c->read(SLV_READ, &check_read, 1); + i2c->write(SLV_WRITE_TSL, &read_cmd, 1); + i2c->read(SLV_READ_TSL, &check_read, 1); } @@ -28,8 +33,8 @@ { check_cmd = COMMAND | CHECK_REG; - i2c->write(SLV_WRITE, &check_cmd, 1); - i2c->read(SLV_READ, &check_read, 1); + i2c->write(SLV_WRITE_TSL, &check_cmd, 1); + i2c->read(SLV_READ_TSL, &check_read, 1); DEBUG.printf("CHECK_REG read = %x\r\n",check_read); @@ -37,18 +42,18 @@ else{ return 0;} } -unsigned int myTSL2561::get_luminosity(unsigned int wait_time) +float myTSL2561::get_luminosity(unsigned int wait_time) { read_cmd = COMMAND | RAW_DATA_LOW; - i2c->write(SLV_WRITE, &read_cmd, 1); + i2c->write(SLV_WRITE_TSL, &read_cmd, 1); wait_ms(wait_time); - i2c->read(SLV_READ, buff, 2); + i2c->read(SLV_READ_TSL, buff, 2); val[0] = (int)buff[0]; val[1] = (int)buff[1] << 8; - lux = (unsigned int)(val[1] | val[0]); + lux = (float)(val[1] | val[0]); return lux; } @@ -60,17 +65,17 @@ if(channel == 0){ time = 14; timing_cmd[1] = TIMING | 0x00; - i2c->write(SLV_WRITE, timing_cmd, 2); + i2c->write(SLV_WRITE_TSL, timing_cmd, 2); } else if(channel == 1){ time = 105; timing_cmd[1] = TIMING | 0x01; - i2c->write(SLV_WRITE, timing_cmd, 2); + i2c->write(SLV_WRITE_TSL, timing_cmd, 2); } else if(channel == 2){ time = 405; timing_cmd[1] = TIMING | 0x02; - i2c->write(SLV_WRITE, timing_cmd, 2); + i2c->write(SLV_WRITE_TSL, timing_cmd, 2); } return time;