TestSRF08 SRF08, I2C

Dependencies:   mbed

Revision:
0:ae88fe3b5508
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Mar 03 11:30:06 2013 +0000
@@ -0,0 +1,34 @@
+#include "mbed.h"
+
+Serial pc(USBTX,USBRX);     // Tx, Rx Pin, default boud = 9600
+I2C i2c(p28, p27);          // SDA, SCL
+
+int main() 
+{
+    char cmd[2];            // Command
+    char echo[2];           // Echo result data (8bit)
+    int  addr  = 0xE0;      // Defalut I2C address of SRF08
+    int  range = 0;         // Rage data (16bit, cm)
+    
+    cmd[0] = 0x02;          // Register(RangeValue)
+    cmd[1] = 0x45;          // (RangeValue*43)+43 = (69*43)+43 = 3010mm, maximum range
+    i2c.write(addr,cmd,2);  // Send I2C data (8bit*2)
+
+    while(1) 
+    {
+        cmd[0] = 0x00;          // Register(Command)
+        cmd[1] = 0x51;          // Ranging mode - Result in centimeters
+        i2c.write(addr,cmd,2);  // Send I2C data (8bit*2)
+        
+        wait(0.07);             // Wait 70ms
+        
+        cmd[0] = 0x02;          // Register(1st Echo)
+        i2c.write(addr,cmd,1);  // Send I2C data (8bit*1)
+        i2c.read(addr,echo,2);  // Read I2C data (8bit*2)
+        
+        range = (echo[0]<<8)+echo[1];   // 8bit+8bit=16bit
+    
+        pc.printf("Range : %d cm\n",range);
+    }
+}
+