Melexis MLX90614 library

Dependents:   IR_temperature IR_temperature IR_temperature UserIntefaceLCD ... more

Committer:
aquahika
Date:
Thu Jun 09 13:28:50 2011 +0000
Revision:
2:01d333d06727
Parent:
1:4a60d3f1e91e
add class description

Who changed what in which revision?

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