Akash Gaikwad
/
Hexiware_Ambient_light_code_OPT3001
Hexiware Ambient Light code using OPT3001
main.cpp@0:92ddc9baf27b, 2017-03-22 (annotated)
- Committer:
- agaikwad
- Date:
- Wed Mar 22 01:11:03 2017 +0000
- Revision:
- 0:92ddc9baf27b
Hexiware Ambient Light code using OPT3001
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
agaikwad | 0:92ddc9baf27b | 1 | #include "mbed.h" |
agaikwad | 0:92ddc9baf27b | 2 | #include "math.h" |
agaikwad | 0:92ddc9baf27b | 3 | |
agaikwad | 0:92ddc9baf27b | 4 | I2C i2c(PTD9,PTD8); |
agaikwad | 0:92ddc9baf27b | 5 | Serial pc(USBTX, USBRX); |
agaikwad | 0:92ddc9baf27b | 6 | AnalogIn check(PTB6); |
agaikwad | 0:92ddc9baf27b | 7 | |
agaikwad | 0:92ddc9baf27b | 8 | const int addr = 0x88; |
agaikwad | 0:92ddc9baf27b | 9 | //const int addr1 = 0xC0; |
agaikwad | 0:92ddc9baf27b | 10 | int main() { |
agaikwad | 0:92ddc9baf27b | 11 | int exp,exp1,l=1; |
agaikwad | 0:92ddc9baf27b | 12 | float z; |
agaikwad | 0:92ddc9baf27b | 13 | float x; |
agaikwad | 0:92ddc9baf27b | 14 | |
agaikwad | 0:92ddc9baf27b | 15 | i2c.frequency(100000); // set required i2c frequency |
agaikwad | 0:92ddc9baf27b | 16 | pc.baud(9600); //set baud rate |
agaikwad | 0:92ddc9baf27b | 17 | pc.printf("I2C started!\r\n"); |
agaikwad | 0:92ddc9baf27b | 18 | char cmd[3]; //for byte transfer |
agaikwad | 0:92ddc9baf27b | 19 | while(1){ |
agaikwad | 0:92ddc9baf27b | 20 | //ambient light sensor code |
agaikwad | 0:92ddc9baf27b | 21 | cmd[0] = 0x01; //configuration register |
agaikwad | 0:92ddc9baf27b | 22 | cmd[1]= 0xCC; //configuration data |
agaikwad | 0:92ddc9baf27b | 23 | cmd[2]= 0x01; //configuration data |
agaikwad | 0:92ddc9baf27b | 24 | i2c.write(addr, cmd, 3); |
agaikwad | 0:92ddc9baf27b | 25 | cmd[0] = 0x00; // data register |
agaikwad | 0:92ddc9baf27b | 26 | i2c.write(addr, cmd, 1); |
agaikwad | 0:92ddc9baf27b | 27 | wait(0.5); |
agaikwad | 0:92ddc9baf27b | 28 | i2c.read(addr, cmd, 2); |
agaikwad | 0:92ddc9baf27b | 29 | |
agaikwad | 0:92ddc9baf27b | 30 | exp= cmd[0]>>4; |
agaikwad | 0:92ddc9baf27b | 31 | exp1= (cmd[0]-(exp<<4))*256+cmd[1]; |
agaikwad | 0:92ddc9baf27b | 32 | l=1; |
agaikwad | 0:92ddc9baf27b | 33 | for(int r=0;r<exp;r++){l=l*2;}; |
agaikwad | 0:92ddc9baf27b | 34 | z= (exp1*l)/100; |
agaikwad | 0:92ddc9baf27b | 35 | pc.printf("Lux = %.2f\n\r", z); // printing LUX value |
agaikwad | 0:92ddc9baf27b | 36 | wait(0.5); |
agaikwad | 0:92ddc9baf27b | 37 | |
agaikwad | 0:92ddc9baf27b | 38 | } |
agaikwad | 0:92ddc9baf27b | 39 | } |