TSL2561(照度センサ)のライブラリです

Dependents:   HYBRYD2018_IZU_ROCKET Hybrid_IZU2019

Revision:
1:4e7b35c8d948
Parent:
0:40ff41e6257e
Child:
2:276a177de00b
--- 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;