Akash Gaikwad
/
Hexiware_Ambient_light_code_OPT3001
Hexiware Ambient Light code using OPT3001
main.cpp
- Committer:
- agaikwad
- Date:
- 2017-03-22
- Revision:
- 0:92ddc9baf27b
File content as of revision 0:92ddc9baf27b:
#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); } }