Simple library for interfacing with SRF02 ultrasonic rage finder (written by C. Evans @eencae). Additions include a function for obtaining readings in inches

Fork of SRF02 by Craig Evans

Files at this revision

API Documentation at this revision

Comitter:
el13k3s
Date:
Mon May 11 16:35:20 2015 +0000
Parent:
1:8e6587d88773
Commit message:
Initial commit - radar not working; ; 11 May 2015

Changed in this revision

SRF02.cpp Show annotated file Show diff for this revision Revisions of this file
SRF02.h Show annotated file Show diff for this revision Revisions of this file
--- a/SRF02.cpp	Sun Mar 08 14:21:40 2015 +0000
+++ b/SRF02.cpp	Mon May 11 16:35:20 2015 +0000
@@ -44,8 +44,37 @@
     return (data[0] << 8) | data[1];
 }
 
-void SRF02::error()
+int SRF02::getDistanceInch()
 {
+    char data[2];
+    
+    // need to send CM command to command register
+    data[0] = CMD_REG;
+    data[1] = INCH_CMD;
+    int ack = i2c->write(SRF02_W_ADD,data,2);  
+    if (ack)
+        error();  // if we don't receive acknowledgement, flash error message
+        
+    // this will start the sensor ranging, the datasheet suggests a delay of at least 65 ms before reading the result
+    wait_ms(70);
+    
+    // we can now read the result - tell the sensor we want the high byte
+    char reg = RANGE_H_REG;   
+    ack = i2c->write(SRF02_W_ADD,&reg,1);  
+    if (ack)
+        error();  // if we don't receive acknowledgement, flash error message
+    
+    // if we read two bytes, the register is automatically incremented (H and L)
+    ack = i2c->read(SRF02_R_ADD,data,2); 
+    if (ack)
+        error();  // if we don't receive acknowledgement, flash error message
+
+    // high byte is first, then low byte, so combine into 16-bit value
+    return (data[0] << 8) | data[1];
+}
+
+void SRF02::error() {
+    
     while(1) {
         leds->write(15);
         wait(0.1);
--- a/SRF02.h	Sun Mar 08 14:21:40 2015 +0000
+++ b/SRF02.h	Mon May 11 16:35:20 2015 +0000
@@ -71,6 +71,12 @@
     * 
     */
     int getDistanceCm();
+    /** Read distance in inches
+    *
+    * @returns distance in inches (int)
+    * 
+    */
+    int getDistanceInch();
 
 private:
     /** Hangs in infinite loop flashing 'blue lights of death'