SCH MME sensor test

Dependencies:   mbed Adafruit_GFX

Revision:
0:28c89a4b6b69
diff -r 000000000000 -r 28c89a4b6b69 mlx90615.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mlx90615.cpp	Wed Nov 06 09:05:08 2019 +0000
@@ -0,0 +1,81 @@
+ 
+#include "mlx90615.h"
+
+
+
+
+MLX90615::MLX90615(I2C* i2c,int addr){
+
+    this->i2caddress = addr;
+    this->i2c = i2c; 
+    
+}
+
+
+bool MLX90615::getTemp(float* temp_val){
+
+    char ch1, ch2;
+    char cmd[3];
+    
+    cmd[0] = 0x27;
+    cmd[1] = 0;
+    cmd[2] = 0;
+    
+    i2c->stop();
+    wait_us(5);
+    ch1 = i2c->write(0xb6, cmd, 1, true);
+    if (ch1 != 0) {return false;}
+    ch2 = i2c->read(0xb7, cmd, 3);
+    if (ch2 != 0) {return false;}
+    wait_us(5);
+    
+    *temp_val = ((((cmd[1]&0x007f)<<8)+cmd[0])*0.02)-273.15;
+        return true;
+
+}
+
+bool MLX90615::getTempAmbient(float* temp_val){
+
+    char ch1, ch2;
+    char cmd[3];
+    
+    cmd[0] = 0x26;
+    cmd[1] = 0;
+    cmd[2] = 0;
+    
+    i2c->stop();
+    wait_us(5);
+    ch1 = i2c->write(0xb6, cmd, 1, true);
+    if (ch1 != 0) {return false;}
+    ch2 = i2c->read(0xb7, cmd, 3);
+    if (ch2 != 0) {return false;}
+    wait_us(5);
+    
+    *temp_val = ((((cmd[1]&0x007f)<<8)+cmd[0])*0.02)-273.15;
+        return true;
+
+}
+
+bool MLX90615::getRawIR(int16_t* ir_val){
+
+    char ch1, ch2;
+    char cmd[3];
+    uint16_t temp;
+        
+    cmd[0] = 0x25;
+    cmd[1] = 0;
+    cmd[2] = 0;
+    
+    i2c->stop();
+    wait_us(5);
+    ch1 = i2c->write(0xb6, cmd, 1, true);
+    if (ch1 != 0) {return false;}
+    ch2 = i2c->read(0xb7, cmd, 3);
+    if (ch2 != 0) {return false;}
+    wait_us(5);
+    temp = (uint16_t)((cmd[1]<<8)|cmd[0]);
+    if(temp & 0x8000) *ir_val = ~((int16_t)(temp & 0x7fff))+1;
+    else *ir_val = (int16_t)temp;
+    return true;
+
+}
\ No newline at end of file