Akash Gaikwad
/
Hexiware_Ambient_light_code_OPT3001
Hexiware Ambient Light code using OPT3001
Diff: main.cpp
- Revision:
- 0:92ddc9baf27b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Mar 22 01:11:03 2017 +0000 @@ -0,0 +1,39 @@ +#include "mbed.h" +#include "math.h" + +I2C i2c(PTD9,PTD8); +Serial pc(USBTX, USBRX); +AnalogIn check(PTB6); + + const int addr = 0x88; + //const int addr1 = 0xC0; +int main() { +int exp,exp1,l=1; +float z; +float x; + + i2c.frequency(100000); // set required i2c frequency + pc.baud(9600); //set baud rate + pc.printf("I2C started!\r\n"); + char cmd[3]; //for byte transfer + while(1){ + //ambient light sensor code + cmd[0] = 0x01; //configuration register + cmd[1]= 0xCC; //configuration data + cmd[2]= 0x01; //configuration data + i2c.write(addr, cmd, 3); + cmd[0] = 0x00; // data register + i2c.write(addr, cmd, 1); + wait(0.5); + i2c.read(addr, cmd, 2); + + exp= cmd[0]>>4; + exp1= (cmd[0]-(exp<<4))*256+cmd[1]; + l=1; + for(int r=0;r<exp;r++){l=l*2;}; + z= (exp1*l)/100; + pc.printf("Lux = %.2f\n\r", z); // printing LUX value + wait(0.5); + + } + } \ No newline at end of file