SRF02 Ultrasonic range finder library

Dependencies:   mbed

Committer:
go2dev
Date:
Mon May 02 18:44:46 2011 +0000
Revision:
0:f0cf55dd23f6

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
go2dev 0:f0cf55dd23f6 1 /*Library for SRF02 ultrasonic range finder*/
go2dev 0:f0cf55dd23f6 2 #include "SRF02.h"
go2dev 0:f0cf55dd23f6 3
go2dev 0:f0cf55dd23f6 4 SRF02::SRF02(PinName sda, PinName scl, int addr) : m_i2c(sda, scl), m_addr(addr){
go2dev 0:f0cf55dd23f6 5 //no initialisation code required here
go2dev 0:f0cf55dd23f6 6 }
go2dev 0:f0cf55dd23f6 7
go2dev 0:f0cf55dd23f6 8 SRF02::~SRF02(){
go2dev 0:f0cf55dd23f6 9
go2dev 0:f0cf55dd23f6 10 }
go2dev 0:f0cf55dd23f6 11
go2dev 0:f0cf55dd23f6 12 float SRF02::distancecm(){
go2dev 0:f0cf55dd23f6 13 //local variables
go2dev 0:f0cf55dd23f6 14 const char m_addr = 0xE0; //srf02 default slave address
go2dev 0:f0cf55dd23f6 15 char commandsequence[2];
go2dev 0:f0cf55dd23f6 16
go2dev 0:f0cf55dd23f6 17 // Get range data from SRF02 in cm
go2dev 0:f0cf55dd23f6 18 // Send Tx burst command over I2C bus
go2dev 0:f0cf55dd23f6 19 commandsequence[0] = 0x00; // Command register
go2dev 0:f0cf55dd23f6 20 commandsequence[1] = 0x51; // Ranging results in cm
go2dev 0:f0cf55dd23f6 21 m_i2c.write(m_addr, commandsequence, 2); // Request ranging from sensor
go2dev 0:f0cf55dd23f6 22 wait(0.07); // Average wait time for sonar pulse and processing
go2dev 0:f0cf55dd23f6 23 // Read back range over I2C bus
go2dev 0:f0cf55dd23f6 24 commandsequence[0] = 0x02; //
go2dev 0:f0cf55dd23f6 25 m_i2c.write(m_addr, commandsequence, 1, 1); //
go2dev 0:f0cf55dd23f6 26 m_i2c.read(m_addr, commandsequence, 2); // Read two-byte echo result
go2dev 0:f0cf55dd23f6 27 //combine upper and lower bytes in to a single value
go2dev 0:f0cf55dd23f6 28 float range = ((commandsequence[0] << 8) + commandsequence[1]);
go2dev 0:f0cf55dd23f6 29 return range;
go2dev 0:f0cf55dd23f6 30
go2dev 0:f0cf55dd23f6 31 }
go2dev 0:f0cf55dd23f6 32
go2dev 0:f0cf55dd23f6 33 float SRF02::distancein(){
go2dev 0:f0cf55dd23f6 34 //local variables
go2dev 0:f0cf55dd23f6 35 const char m_addr = 0xE0; //srf02 default slave address
go2dev 0:f0cf55dd23f6 36 char commandsequence[2];
go2dev 0:f0cf55dd23f6 37
go2dev 0:f0cf55dd23f6 38 // Get range data from SRF02 in cm
go2dev 0:f0cf55dd23f6 39 // Send Tx burst command over I2C bus
go2dev 0:f0cf55dd23f6 40 commandsequence[0] = 0x00; // Command register
go2dev 0:f0cf55dd23f6 41 commandsequence[1] = 0x50; // Ranging results in cm
go2dev 0:f0cf55dd23f6 42 m_i2c.write(m_addr, commandsequence, 2); // Request ranging from sensor
go2dev 0:f0cf55dd23f6 43 wait(0.07); // Average wait time for sonar pulse and processing
go2dev 0:f0cf55dd23f6 44 // Read back range over I2C bus
go2dev 0:f0cf55dd23f6 45 commandsequence[0] = 0x02; //
go2dev 0:f0cf55dd23f6 46 m_i2c.write(m_addr, commandsequence, 1, 1); //
go2dev 0:f0cf55dd23f6 47 m_i2c.read(m_addr, commandsequence, 2); // Read two-byte echo result
go2dev 0:f0cf55dd23f6 48 //combine upper and lower bytes in to a single value
go2dev 0:f0cf55dd23f6 49 float range = ((commandsequence[0] << 8) + commandsequence[1]);
go2dev 0:f0cf55dd23f6 50 return range;
go2dev 0:f0cf55dd23f6 51
go2dev 0:f0cf55dd23f6 52 }
go2dev 0:f0cf55dd23f6 53
go2dev 0:f0cf55dd23f6 54 float SRF02::distanceus(){
go2dev 0:f0cf55dd23f6 55 //local variables
go2dev 0:f0cf55dd23f6 56 const char m_addr = 0xE0; //srf02 default slave address
go2dev 0:f0cf55dd23f6 57 char commandsequence[2];
go2dev 0:f0cf55dd23f6 58
go2dev 0:f0cf55dd23f6 59 // Get range data from SRF02 in cm
go2dev 0:f0cf55dd23f6 60 // Send Tx burst command over I2C bus
go2dev 0:f0cf55dd23f6 61 commandsequence[0] = 0x00; // Command register
go2dev 0:f0cf55dd23f6 62 commandsequence[1] = 0x52; // Ranging results in cm
go2dev 0:f0cf55dd23f6 63 m_i2c.write(m_addr, commandsequence, 2); // Request ranging from sensor
go2dev 0:f0cf55dd23f6 64 wait(0.07); // Average wait time for sonar pulse and processing
go2dev 0:f0cf55dd23f6 65 // Read back range over I2C bus
go2dev 0:f0cf55dd23f6 66 commandsequence[0] = 0x02; //
go2dev 0:f0cf55dd23f6 67 m_i2c.write(m_addr, commandsequence, 1, 1); //
go2dev 0:f0cf55dd23f6 68 m_i2c.read(m_addr, commandsequence, 2); // Read two-byte echo result
go2dev 0:f0cf55dd23f6 69 //combine upper and lower bytes in to a single value
go2dev 0:f0cf55dd23f6 70 float range = ((commandsequence[0] << 8) + commandsequence[1]);
go2dev 0:f0cf55dd23f6 71 return range;
go2dev 0:f0cf55dd23f6 72
go2dev 0:f0cf55dd23f6 73 }
go2dev 0:f0cf55dd23f6 74
go2dev 0:f0cf55dd23f6 75
go2dev 0:f0cf55dd23f6 76