HAND
mlx90614.cpp@5:5031dd46c48c, 2021-11-03 (annotated)
- Committer:
- condato_mbed
- Date:
- Wed Nov 03 15:58:53 2021 +0000
- Revision:
- 5:5031dd46c48c
- Parent:
- 2:01d333d06727
HAND
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
condato_mbed | 5:5031dd46c48c | 1 | #include "mlx90614.h" |
aquahika | 1:4a60d3f1e91e | 2 | |
aquahika | 2:01d333d06727 | 3 | |
aquahika | 2:01d333d06727 | 4 | |
aquahika | 2:01d333d06727 | 5 | |
aquahika | 1:4a60d3f1e91e | 6 | MLX90614::MLX90614(I2C* i2c,int addr){ |
aquahika | 1:4a60d3f1e91e | 7 | |
aquahika | 1:4a60d3f1e91e | 8 | this->i2caddress = addr; |
aquahika | 1:4a60d3f1e91e | 9 | this->i2c = i2c; |
aquahika | 1:4a60d3f1e91e | 10 | |
aquahika | 1:4a60d3f1e91e | 11 | } |
aquahika | 1:4a60d3f1e91e | 12 | |
aquahika | 1:4a60d3f1e91e | 13 | |
aquahika | 1:4a60d3f1e91e | 14 | bool MLX90614::getTemp(float* temp_val){ |
aquahika | 1:4a60d3f1e91e | 15 | |
aquahika | 1:4a60d3f1e91e | 16 | char p1,p2,p3; |
aquahika | 1:4a60d3f1e91e | 17 | float temp_thermo; |
aquahika | 1:4a60d3f1e91e | 18 | bool ch; |
aquahika | 1:4a60d3f1e91e | 19 | |
aquahika | 1:4a60d3f1e91e | 20 | i2c->stop(); //stop i2c if not ack |
aquahika | 1:4a60d3f1e91e | 21 | wait(0.01); |
aquahika | 1:4a60d3f1e91e | 22 | i2c->start(); //start I2C |
aquahika | 1:4a60d3f1e91e | 23 | ch=i2c->write(i2caddress); //device address with write condition |
aquahika | 1:4a60d3f1e91e | 24 | |
aquahika | 1:4a60d3f1e91e | 25 | if(!ch)return false; //No Ack, return False |
aquahika | 1:4a60d3f1e91e | 26 | |
aquahika | 1:4a60d3f1e91e | 27 | ch=i2c->write(0x07); //device ram address where Tobj value is present |
aquahika | 1:4a60d3f1e91e | 28 | |
aquahika | 1:4a60d3f1e91e | 29 | if(!ch)return false; //No Ack, return False |
aquahika | 1:4a60d3f1e91e | 30 | |
aquahika | 1:4a60d3f1e91e | 31 | |
aquahika | 1:4a60d3f1e91e | 32 | i2c->start(); //repeat start |
aquahika | 1:4a60d3f1e91e | 33 | ch=i2c->write(i2caddress|0x01); //device address with read condition |
aquahika | 1:4a60d3f1e91e | 34 | if(!ch)return false; //No Ack, return False |
aquahika | 1:4a60d3f1e91e | 35 | |
aquahika | 1:4a60d3f1e91e | 36 | p1=i2c->read(1); //Tobj low byte |
aquahika | 1:4a60d3f1e91e | 37 | p2=i2c->read(1); //Tobj heigh byte |
aquahika | 1:4a60d3f1e91e | 38 | p3=i2c->read(0); //PEC |
aquahika | 1:4a60d3f1e91e | 39 | |
aquahika | 1:4a60d3f1e91e | 40 | i2c->stop(); //stop condition |
aquahika | 1:4a60d3f1e91e | 41 | |
aquahika | 1:4a60d3f1e91e | 42 | |
aquahika | 1:4a60d3f1e91e | 43 | temp_thermo=((((p2&0x007f)<<8)+p1)*0.02)-0.01; //degree centigrate conversion |
aquahika | 1:4a60d3f1e91e | 44 | *temp_val=temp_thermo-273; //Convert kelvin to degree Celsius |
aquahika | 1:4a60d3f1e91e | 45 | |
aquahika | 1:4a60d3f1e91e | 46 | return true; //load data successfully, return true |
aquahika | 1:4a60d3f1e91e | 47 | } |