TestSRF08 SRF08, I2C

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 Serial pc(USBTX,USBRX);     // Tx, Rx Pin, default boud = 9600
00004 I2C i2c(p28, p27);          // SDA, SCL
00005 
00006 int main() 
00007 {
00008     char cmd[2];            // Command
00009     char echo[2];           // Echo result data (8bit)
00010     int  addr  = 0xE0;      // Defalut I2C address of SRF08
00011     int  range = 0;         // Rage data (16bit, cm)
00012     
00013     cmd[0] = 0x02;          // Register(RangeValue)
00014     cmd[1] = 0x45;          // (RangeValue*43)+43 = (69*43)+43 = 3010mm, maximum range
00015     i2c.write(addr,cmd,2);  // Send I2C data (8bit*2)
00016 
00017     while(1) 
00018     {
00019         cmd[0] = 0x00;          // Register(Command)
00020         cmd[1] = 0x51;          // Ranging mode - Result in centimeters
00021         i2c.write(addr,cmd,2);  // Send I2C data (8bit*2)
00022         
00023         wait(0.07);             // Wait 70ms
00024         
00025         cmd[0] = 0x02;          // Register(1st Echo)
00026         i2c.write(addr,cmd,1);  // Send I2C data (8bit*1)
00027         i2c.read(addr,echo,2);  // Read I2C data (8bit*2)
00028         
00029         range = (echo[0]<<8)+echo[1];   // 8bit+8bit=16bit
00030     
00031         pc.printf("Range : %d cm\n",range);
00032     }
00033 }
00034