3/26/16 12:25 am JJ

Files at this revision

API Documentation at this revision

Comitter:
j_j205
Date:
Sat Mar 26 05:26:10 2016 +0000
Commit message:
3/26/16 12:25 am JJ

Changed in this revision

ShortRangeSensor.cpp Show annotated file Show diff for this revision Revisions of this file
ShortRangeSensor.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ShortRangeSensor.cpp	Sat Mar 26 05:26:10 2016 +0000
@@ -0,0 +1,54 @@
+#include "ShortRangeSensor.h"
+
+ShortRangeSensor::ShortRangeSensor(PinName sda, PinName scl) : i2c(sda, scl)
+{
+    //disables ECE
+    i2c.write(ADDR, SYSRANGE__RANGE_CHECK_ENABLES, 3);
+}
+
+//returns range in mm
+int ShortRangeSensor::getRange()
+{
+    char data;
+    
+    i2c.write(ADDR, SYSRANGE__START_SAMPLE, 3);
+    wait_ms(20);
+    i2c.write(ADDR, RESULT__RANGE_VAL, 2);
+    i2c.read(ADDR, &data, 1);
+    
+    return data;
+}
+
+int ShortRangeSensor::getStatus()
+{
+    char data;
+    
+    i2c.write(ADDR, RESULT__RANGE_STATUS, 2);
+    i2c.read(ADDR, &data, 1);
+    
+    return data;
+}
+
+int ShortRangeSensor::getPPOffset()
+{
+    char data;
+    
+    i2c.write(ADDR, SYSRANGE__PART_TO_PART_RANGE_OFFSET, 2);
+    i2c.read(ADDR, &data, 1);
+    
+    return data;
+}
+
+void ShortRangeSensor::setPPOffset(int offset)
+{
+    if(offset < -128 || offset > 128)
+        return;
+        
+    char cmd[3];
+    
+    cmd[0] = SYSRANGE__PART_TO_PART_RANGE_OFFSET[0];
+    cmd[1] = SYSRANGE__PART_TO_PART_RANGE_OFFSET[1];
+    cmd[2] = offset;
+    
+    i2c.write(ADDR, cmd, 3);
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ShortRangeSensor.h	Sat Mar 26 05:26:10 2016 +0000
@@ -0,0 +1,32 @@
+#ifndef SHORTRANGESENSOR_H
+#define SHORTRANGESENSOR_H
+
+#include "mbed.h"
+
+//constants for i2c communication
+const int ADDR = 0x52;
+const char SYSRANGE__START_SAMPLE[] = {0x00,0x18,0x01};
+const char RESULT__RANGE_VAL[] = {0x00,0x62};
+const char RESULT__RANGE_STATUS[] = {0x00,0x4D};
+const char SYSRANGE__RANGE_CHECK_ENABLES[] = {0x00,0x2D,0x10};
+const char SYSRANGE__PART_TO_PART_RANGE_OFFSET_INIT[] = {0x00,0x24,0x00}; //once correct offset is found, chage 0x00 to correct offset
+const char SYSRANGE__PART_TO_PART_RANGE_OFFSET[] = {0x00,0x24};
+
+class ShortRangeSensor
+{
+    public:
+    ShortRangeSensor(PinName sda, PinName scl);
+    //returns range in mm
+    int getRange();
+    //returns value of status register
+    int getStatus();
+    //returns value of part to part range offset register
+    int getPPOffset();
+    //sets value of part to part range offset register, -128 to 128
+    void setPPOffset(int offset);
+    
+    private:
+    I2C i2c;
+};
+
+#endif
\ No newline at end of file